Git常用命令

配置

【git config】

 git config --global user.name "zyb"
 git config --global user.email "123456@qq.com"
 git config --global core.editor C:/soft/EmEditor/EmEditor.exe
 git config --global alias.co checkout

git help <command> 获取帮助,也可以写成 git <command> --help

 git help config

基本操作

【初始化】
   git init 初始化仓库
  git init ~/git-server --bare 将当前的仓库初始化为一个裸仓库,裸仓库的意思是没有工作目录。中央服务器并不需要工作目录,它是一个被动的接收作用,如果有工作目录的话,反而会造成错乱。

【增加】
  git add <file> 跟踪新文件,或者把已跟踪的文件放到暂存区
  git add . 批量跟踪所有工作目录下未被跟踪的文件

【删除】
  git rm --cached <file> 仅从暂存区删除
  git rm <file> 从暂存区和工作目录删除
  git rm \*~ 递归删除当前目录及其子目录中所有 ~ 结尾的文件
git rm $(git ls-files --deleted) 删除所有被跟踪,但在工作目录被删除的文件

【提交】  
  git commit 把文件提交到仓库,这种方式会启动文本编辑器以便输入本次提交的说明
  git commit -m 'wrote a file' -m参数后跟提交说明的方式,在一行命令中提交更新
  git commit -am 'wrote a file'把所有已经跟踪过的文件暂存起来一并提交

【查看】
   git status 检查当前文件状态
   git diff 查看工作目录与暂存区的差异
   git diff --cached 查看暂存区与某次提交的差异,默认为HEAD
   git diff id1 id2 查看两次提交之间的差异
   git log 查看提交历史,git log有许多选项,下表列出了一些常用的选项及其释义

选项         说明
-p            按补丁格式显示每个更新之间的差异
--word-diff       按 word diff 格式显示差异
--stat          显示每次更新的文件修改统计信息
--shortstat       只显示 --stat 中最后的行数修改添加移除统计
--name-only       仅在提交信息后显示已修改的文件清单
--name-status     显示新增、修改、删除的文件清单
--abbrev-commit   仅显示 SHA-1 的前几个字符,而非所有的 40 个字符
--relative-date   使用较短的相对时间显示(比如,“2 weeks ago”)
--graph        显示 ASCII 图形表示的分支合并历史
--pretty        使用其他格式显示历史提交信息可用的选项包括oneline,short,full,fuller 和format(后跟指定格式)
--oneline        `--pretty=oneline --abbrev-commit` 的简化用法

【撤销】
  git commit --amend 修改最后一次提交,可以添加漏掉的文件,或者重写提交信息
  git reset HEAD <file> 取消暂存
  git checkout -- <file> 恢复文件内容
  git checkout HEAD -- <file> 取消暂存,并恢复文件内容

分支操作

【查看】
  git branch 列出所示分支,当前分支前面会标一个*号
  git branch -v 查看各分支最后一个提交对象的信息
  git branch -a 查看各分支情况,包括远程分支
  git branch --merged 查看哪些分支被并入当前分支
  git branch --no-merged 查看哪些分支没有被并入当前分支
  git cat-file -t <git对象> 查看Git对象的类型,主要的git对象包括tree、commit、parent和blob等
  git cat-file -p <git对象> 查看Git对象的内容

【新建】
  git branch <branchName> 新建分支

【删除】
  git branch -d <branchName> 删除分支
  git branch -D <branchName> 强制删除分支,用于删除没有合并过的分支

【切换】
  git checkout <branchName> 用于分支切换,将HEAD移动到目标分支,并将工作目录中的文件换成目标分支所指向的快照内容
  git checkout -b <branchName> 创建新分支并将HEAD移动到该目标分支
  git checkout - 将HEAD移动到上一分支

【合并】
  git merge <branchName> 将目标分支合并到当前分支
  git merge --no-ff -m "commit描述" <branchName> 合并分支,强制禁用Fast forward快进模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去
  git log --graph 查看分支合并情况

【保存现场】
  git stash 保存目录的工作目录和暂存区状态,并返回到干净的工作空间
  git stash save "push to stash area" 保存目录的工作目录和暂存区状态,返回到干净的工作空间,并保存"push to stash area"信息
   git stash list 查看stash栈中保存的记录列表
  git stash apply stash@{0} 将stash栈中保存的stash@{0}内容重新恢复到工作目录中
  git stash drop stash@{0} 删除stash栈中保存的stash@{0}内容
  git stash pop 相当于apply和drop的合体,它将stash栈中最顶端的记录取出到工作目录中,这也意味着包含删除stash栈中对应内容的操作

版本切换

【回退】
  git reset --mixed <commit> (默认)将当前分支回退到历史某个版本,提交的内容会复制到暂存区
  git reset --hard <commit>将当前分支回退到历史某个版本,提交的内容会复制到暂存区和工作目录
  git reset --soft <commit> 将当前分支回退到历史某个版本,工作目录和暂存区不会在任何变化

【查看】
   git reflog 按照之前经过的所有的commit路径按序来排列,用来记录每一次命令

远程操作

【查看】
   git remote 查看当前配置有哪些远程仓库
   git remote -v (v为--verbose的简写,中文意思是冗长的),显示远程仓库对应的克隆地址
   git remote show origin 查看远程仓库origin详细信息

【关联】
  git remote add [shortname] [url] 添加一个新的远程仓库,可指定一个名字,以便引用,一般为origin
  git remote rename pb paul 将远程库的名称从pb改为paul
  git remote rm [shortname] 取消对该远程库的关联

【获取】
   git clone <address> Git会自动将此远程仓库命名为origin,并下载其中所有的数据,建立一个指向它的master分支的指针,在本地命名为origin/master
   git fetch origin 同步远程服务器origin上master分支的数据到本地的master分支
   git fetch origin <branchName> 获取远程服务器origin上<branchName>分支的数据到本地的<branchName>分支
   git merge origin/master 使用fetch命令,只是将origin的数据下载到了本地,但本地的工作目录只有使用merge合并,才能更新为最新的内容
   git pull origin <branchName> 相当于fetch和merge命令的合体

【跟踪远程分支】
   git checkout -b serverfix origin/serverfix 把远程分支serverfix的内容合并到当前分支serverfix。这会切换到新建的serverfix本地分支,其内容同远程分支origin/serverfix一致,这样就可以在里面继续开发了
   git checkout --track origin/serverfix 用--track选项简化 git checkout -b serverfix origin/serverfix命令
  git checkout -b a1 origin/a2 把远程分支a2的内容合并到当前分支a1

【推送】
   git push origin <branchName> 取出在本地的<branchName>分支,推送到远程仓库的<branchName>分支
  git push origin serverfix:somebranch 取出在本地的serverfix分支,推送到远程仓库的somebranch分支

【删除】
  git push origin :serverfix 在服务器上删除serverfix分支

标签管理

【新建】
  git tag <tagname> 新建一个轻量级标签,默认为HEAD
  git tag <tagname> <commit id> 为指定的commit ID新建一个轻量级标签
  git tag -a <tagname> -m <标签信息> 新建一个带有标签信息的附注标签

【签名】
  git tag -s <tagname> -m <标签信息> 新建一个GPG签名标签 git tag -v <tagname> 验证一个GPG签名标签

【查看】
  git tag 查看所有标签 git show <tagname> 查看标签详细信息

【删除】
  git tag -d <tagname> 删除本地标签 git push origin :refs/tags/<tagname> 删除远程标签

【推送】
  git push origin <tagname> 推送标签到远端仓库 git push origin --tags 一次性推送全部尚未推送到远程的本地标签

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,165评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,503评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,295评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,589评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,439评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,342评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,749评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,397评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,700评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,740评论 2 313
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,523评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,364评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,755评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,024评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,297评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,721评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,918评论 2 336

推荐阅读更多精彩内容