git常用指令整理

git常用指令一览表

GIT指令 说明
git add . 将全部文件的内容加到Git索引以便执行commit. 这个指令不会检查文件夹中是否有文件被删除。
要注意的是,只有执行“ git add”时的文件内容会被加入Git 索引。如果后来又修改了文件,
新的文件内容不会在Git索引中。我们必须重新执行“ git add ”指令,才会更新Git索引。
git add 文件名 文件名 … 将指定的文件的内容加到Git 索引,以便执行commit 操作。要注意的是,
只有执行“ git add”时,文件内容才会被加入Git 索引。如果后来又修改了文件,
新的文件内容不会在Git 索引中。我们必须重新执行“ git add ”指令,才会更新Git 索引。
git add -A 除了把全部文件的内容加到Git 索引以外,也会检查文件夹中是否有文件被删除。这些
被删除的文件会标记在Git 索引中,当执行commit 指令的时候,被标记删除的文件也会
从新的commit 节点中被删除。我们可以从Git 丈档库的历史版本中找回被删除的文件。
git add –update
或是
git add -u
对比当前文件夹中的文件内容和Git 文档库中的文件内容,把有修改的部分和删除的文
或是件加到Git 索引,以便执行commit 。这个指令不会增加新的文件到Git 索引,只会更新
或是删除文件。
git blame 文件名

或者
git blame -L 起始行,结束行文件名

或者
git blame -L 起始行,文件名

或者
git blame -L 结束行,文件名
显示文件的每一行是由谁修改。可以搭配“-L”选项,指定要从哪一行开始到哪一行
或是结束。如果没有指定起始行,表示是从文件的第一行开始。如果没有指定结束行,
表示要到文件的最后一行。
git branch 自己取的分支名称
[commit 节点标识符或是标签]
按照参数的多少,会有不同的功能:

1. 如果最后指定了commit 节点标识符或是标签,就会从该节点“长”出分支;如果没
有指定commit 节点,就会从最新的commit“长”出分支;

2 “ git branch”指令后面没有接任何参数时,会列出当前文档库中正在开发的所有分支。
git branch 新分支的名称己经存在的分支 从特定的分支,再长出另一个新的分支。
git branch -a 列出丈档库和远程文档库中所有的分支。
git branch -d 要删除的分支名称 删除指定的分支。必须先切换到另一个分支,才能执行这个指令。
git branch -D 要删除的分支名称 在一般情况下,分支应该先合并到另一个分支,之后才能够被删除。如果我们要删除还
没有合并的分支, Git 会显示错误信息,并且停止删除分支的操作。如果确定要删除还
没有合并的分支,可以使用“-D ”选项,要求Git 强制执行删除分支的操作。
git branch –list 分支名称样板 显示符合“分支名称样板”的所有分支,例如以下指令范例会显示所有以“ bug/”开头
的分支:git branch –list bug/*
git branch -m 新的分支名称 更改分支的名称。必须先切换到该分支,才能够执行这个指令。
git checkout 文件1 文件2 …

或是
git checkout .
Git 会先找索引中有没有该文件,如果有就把它取出:如果没有,就从最新的commit
节点开始,按照时间顺序往前寻找,然后取出第一个找到的文件版本,每一个文件都用
同样的方式处理。如果要取出文档库中全部文件的最新版本,可以执行“ git checkout .”’
git checkout commit 节点标识符或标签[文件1 文件2..] 从Git 文档库的commit 节点取出指定的文件。如果取出的文件和当前文档库中最新
commit 的文件内容不同,这个取出的文件内容会自动记录在Git 索引中。下次执行”git commit”
指令时,这个取出的文件内容就会存入文档库中成为新的版本。如果要避免这
种情况发生,可以在执行“git checkout”指令之后,立刻执行“ git reset HEAD ”来清除
Git 索引。
git checkout 分支名称 将当前操作的分支切换到指定的分支。
git checkout -f 分支名称 在切换分支的时候, Git 会先对比丈档库中当前分支的文件内容是否和将要切换过去的
分支的文件内容相同。针对内容不一样的文件, Git 需要从文档库中取出该文件,这是
为了让文件夹中的文件符合分支原来的状态。但是为了避免数据遗失,当Git 要覆盖
文件夹中的文件时,会检查该文件的内容是否已经加入文档库。如果还没有加入, Git
会显示警告信息,并且停止执行,以免资料遗失。如果我们确定不想保留这些已经修改
却还没有加入文档库的文件,可以加入“-f”选项,这样Git 就会强制覆盖修改后的文件。
git checkout -b 新分支的名称[commit 节点标识符或是标签] 创建指定的分支,然后切换到新创建的分支。这个指令等同于先执行“ git branch 新分支的
名称commit 节点标识符或是标签” , 接着再执行“ git checkout 新分支的名称”。如果最
后指定了commit 节点标识符或是标签,就会从该节点“长”出分支。如果没有指定commit
节点,就会从最新的commit “ 长”出分支。
git cherry-pick -n commit 节点标识或标签 把指定的commit节点的文件版本合并到文件夹中的文件。在默认情况下
,执行这个指令会创建一个新的commit 节点。如果不想要创建新节
或标签点, 则可以加上”-n”选项。执行这个指令之前,
文件夹中被修改的文件必须先存入Git 文档库,否则会出现警告信息,并且停止执行。
git clone “远程Git 文档库”的路径 从“远程Git 文档库”复制一个“本地Git或是文档库”到我们的计算机。
第一种方式适用的情况是“远程Git 文档库”在我们自己的计算机上。
git clone –bare[程序项目文件夹名称][“远程Git文档库”的路径] 从“本地Git 文档库”复制出Bare 类型的“远程Git 文档库”
我们通常会帮Bare类型的文档库加上扩展名”.git”,例如game.git。
git commit -m ‘这次操作的说明’ [–author=‘操作者姓名 [email 邮箱]’] 把当前Git 索引的内容送进文档库存储。每一次执行commit 一定要附加说明和操作者
信息。如果没有使用“-m ” 选项, Git 会启动文字编辑程序让我们输入操作说明。默认
的文字编辑程序是vi ,我们可以使用“ git config ”指令设置其他的文字编辑程序,详
细操作方式请参考第2 单元的说明。除了使用“–author”选项输入操作者信息以
外,也可以把操作者的信息记录在Git 配置文件中, 这样就不用加上“–author” 选项.
git commit -a -m ‘这次操作的说明’[–author=‘操作者姓名[email 邮箱]’]
或是 git commit –all -m ‘这次操作的说明’[–author=‘操作者姓名[email 邮箱]’]
这个指令的效果等同于先执行“git add -u”再执行“ git commit -m ‘这次操作的说明’
–author=‘操作者姓名[email 邮箱]’”。首先对比当前文件夹中的文件内容和Git 文
档库中的文件内容,把有修改的部分和删除的文件加到Git 索引,然后执行commit。这
个指令不会把新的文件加到Git 文档库。
git commit –amend -m ‘新的操作说明’–author=‘操作者姓名[email 邮箱]’) 修改最近一次commit 节点的操作说明,或是操作者信息
git config -l 或者
git config –global -l
或者 git config –system -l
只有使用“ -l”选项时会显示三个不同层级的配置文件中所有的设置项。低优先权配置
文件的设置项会先显示,最高优先权配置文件的设置项显示在最后。

加入“–global ” 选顶时会显示优先权配置文件中的设置项,也就是登录账号的home
或是directory 里面的.gitconfig 文件中的设置。

加入“–system ”选项时会报示最低优先权配置文件中的设置顶,也就是Git程序安装文
件夹里面的etc\gitconfig 文件夹的设置。
git config 设置项名称‘设置值’

或者
git config –global 设置项名称‘设置值’

或者
git config –system 设置项名称‘设置值‘
在Git 配置文件中加入或是修改设置。如果“设置值”中没有空格,可以省略单引号。
如果没有使用任何选项,表示要将设置项写到当前操作中的Git文档库中的配置文件。
如果加入“–global ”选项,表示要将设置项写到登录账号的home directory 里面
的.gitconfig 配置文件中.如果加入“–system”选项,表示要将设置项
写到Git 程序安装文件夹里面的etc\gitconfig配置文件中。
Git diff 文件名 判断该文件是否发成冲突或者解决冲突是否成功
Git fetch
或者 git fetch –all
从“远程Git 文档库”取回当前所在分支的最新数据。完成这项工作之后,我们计算机
上的“远程Git 文档库”的当前分支状态就和实际的情况一致。如果想要一次获取全部
分支最新的数据,可以加上“-all ”选项。
Git init 在当前的文件夹创建一个Git 文档库。如果这个文件夹己经有Git 文档库,这个指令就
不会再重新创建,也不会修改其中的内容。Git 文档库其实是名称叫作“ .git ”的子文件
夹,默认它会被隐藏起来,我们可以改变文件夹的查看选项让它显示出来。如果删除这
个子文件夹, Git 文档库的内容就会全部消失。
Git init -bare Git 文档库文件夹名称 创建Bare 类型的Git 文档库。我们通常会帮Bare 类型的Git 文档库加上扩展名“ .git ”,
例如game.git 。
git log 按照时间顺序,从最近一次的commit 开始,往前列出每一次commit 的信息,包括标识
符、执行人、日期利时间以及说明。
Git log -after=’公元年-月-日 时间’[–before=’公元年-月-日 时间’] 指定要显示某一段时间期间的commit 的信息。“ after"可以换成“-since ”,“–before ”
可以换成“-until”。
Git log -author=‘人名’ 只显示特定人的commit 节点信息。
git log –graph –online –all –decorate 加上“–graph ” 选项会用文本模式排列出commit 节点的演进图
.加上’–oneline ”选
项会用最精简的方式显示.
加上“ –all ”选项会显示所有分支的commit信息。

加上“–decorate ” 选项表示要标示分支的名称。
git log –stat

或者
git log –shortstat

或者
git log –numstat
显示每一个commit 更改程序代码和文件的情况,包括有多少文件被修改了、
增加了几行程序代码和删除了几行程序代码。
git ls-file 列出当前Git 文档库中的文件列表。
git ls-remote 列出“本地Git 文档库”对应的所有“远程Git 文档库”
git merge 分支名称 把指定的分支合并到当前所在的分支。
git merge –abort 合并的过程发生冲突之后,执行这个指令可以放弃合并。Git 文档库和文件夫中的文件
内容都会恢复到未执行合并前的状态。
git merge –no-ff 分支名称 “–no-ff”逃项表示不要使用fast-forward merge 。
git mv 原来的文件名 新文件名 更改文件夹巾的文件名,或是子文件夹名称,然后把它记录在Git 索引。接着只要执行
“git commit”指令,就可以将更改存入文档库。
git pull

或者
git pull -all
“git pull”指令会执行两项工作:

1. 从“远程Git 文档库”取回当前所在分支的最新数据。完成这项工作之后,计算机
上的“远程Git 文档库”的当前分支状态就和实际的情况一致。如果想要一次获取全部
分支最新的数据,可以加上“–all ”选项。
2. 把“远程Git 文档库”的分支合并到“本
地Git 文档库”的分支。
git pull –rebase

或者
git pull -r
把“ git pull "指令的第二个步骤换成“ git rebase” (原来是“ git merge” )。
git push 执行这个指令时,屏幕画面会显示一段信息,提示我们需要在Git 的配置文件中如入
push.default 的设置。我们可以执行下列指令,指定push.default 为matching:

git config –global push.default matching

这样的话,如果只下达”git push”指令,后面没有加上任何参数, Git 会
把“本地Git文档库”中所有曾经传送给“远程Git 文档库”的分支,都一并更新.
或者,可以执行下列指令,指定push.default 为simple:

git config –global push.default simple

这样的话,如果只下达“ git push ”指令,后面没有加上任何参数。Git 会检查当前所在
的分支是否在配置文件中记录了它对应的“远程Git 文档库”的分支。如果有,就会
传送更新给“远程Git 文档库”。否则,就不会执行更新。和matching 的设置相比之下,
simple 是比较安全的做法。因为它只会更新当前所在的分支,不会一次更新全部的分支。
git push origin 分支名称 把指定分支的最新状态送到origin 属性所对应的“远程Git 文档库”。执行这个指令不
会在配置文件中记录“本地Git 文档库”的分支和“远程Git 文档库”的分支之间的对
应关系.
git push “远程Git 文档库”的url 分支名称 把指定分支的最新状态送到指定的“远程Git文档库”。执行这个指令不会在配置文件中
记录“本地Git 文档库”的分支和“远程Git文档库”的分支之间的对应关系。
git push –all 把“本地Git 文档库”中所有的分支传送到“远程Git 文档库”。
git push “远程Git 文档库”的名称 –delete[分支名称] 删除“远程Git 文档库”中的指定分支。
git rebase 分支名称 把指定分支的修改运用到当前的分支。当前分支会变成从指定的分支的HEAD 节点长
出来。
git rebase –abort 如果执行rebase 指令后出现冲突的情况,可以使用这个指令取消rebase 的操作。
Git 文档库会恢复到还没有执行rebase 之前的状态。
git rebase –continue 执行rebase 指令后出现冲突的情况,而且我们己经编辑好发生冲突的文件,
接着就可以执行“git add”指令, 把新的文件内容加入Git 索引,
最后再执行这个指令,完成rebase的操作。
git reflog HEAD 或是任何分支的名称 显示HEAD 或是任何分支变动的历史记录。如果不加任何参数,默认会列出HEAD 变动
的历史记录。
git remote -v 显示和“远程Git 文档库”相关的设置。
git remote add [“远程Git 文档库”的名称] [“远程Git 文档库”的url] 在“本地Git 文档库”的配置文件中加入指定的“远程Git 文档库”名称, 并且设置它
的url
git remote rm “远程Git 文档库”的名称

或者
git remote remove “远程Git 文档库”的名称
删除“本地Git 文档序”的配置文件指定的“远程Git 文挡库”名称。
一旦删除“远程Git 文档库”的名称,所有属于它的追踪
分支也会一并消失。如果要再还原回来,只要再执行”git remote add”指令
和“ git remote update”指令即可。
git remote rename 旧名称 新名称 改变“远程Git 文档库”的名称。改变“远程Git 文档库”的名称之后,
和它相关的远程追踪分支的名称也会自动更新。
git reset HEAD 文件名 将指定文件的内容从Git 索引中删除。如果没有加上文件名,则会清除
Git 索引中所有的内容。
git reset –soft commit 节点标识符或是标签

或者
git reset –mixed commit 节点标识符或是标签

或者
git reset –hard commit 节点标识符或是标签
将Git 文档库“消磁”,让Git 文挡库恢复到某一个commit 节点的状态,
如果使用“–soft "选项,表示只有文档库中的数据会更改,
Git 索引和文件夹中的文件都不会受到影响。如果使用“–mixed ”选项(这是默
认的选项),表示Git 索引也会恢复到指定节点的状态,但是文件夹中的文件仍然不会
受到影响。如果使用“–hard ” 选项,则文档库、Git索引和文件夹中的文件都会恢复到
指定节点的状态。
git revert commit 节点 回到指定的commit 节点的前一个节点的文件状态。执行完毕后会新增一个commit 节
点。请注意和“ git reset ”指令的差别。
git revert –abort 如果执行“git revert”指令的时候发生冲突,可以执行这个指令取消revert 的操作。
git rm 文件名 Git 会执行两项检查:
Git 索引中有没有该文件的内容(也就是
刚刚有没有执行过“git add 文件名”),如果有,表示这个文件的内容和文档库中的不
一样,为了避免遗失数据, Git 会显示提醒信息,然后放弃执行:

2. 文件夹中的文件内容是不是和文档库中的一样,如果不一样, Git 同样会显示提醒
信息,然后放弃执行,以免遗失数据。如果通过以上两项检查, Git 会马上删除文
件夹中的文件,然后在索引中记录要从文档库中删除该文件。最后必须再执行”git
commit”指令才会真正从文档库中删除文件。
git rm –cached 文件名 把指定的文件从tracked 状态变成untracked状态,也就是说从此以后不需要在文档库中
更新这个文件, 而且Git 索引中这个文件的内容也会被删除,但是Git 不会从文件夹中
删除这个文件(这是加上”–cached”选项最大的差别)。
git shortlog 按照人名的字母顺序,列出每-个人执行commit 的次数和说明。
加上“–numbered ”选项(或是“ -n ” )可以按照commit 次数,由高至低按序排列。
如果不需要显示commit 说明,可以加上”–summary "选项(或是“-s ”)。
git show commit 节点标识符或是标签 显示特定commit 节点的详细信息。commit节点标识符是一组很长的16 进制数字,指
定commit 节点标识符时,不需要将它完整列出。一般只要使用最前面4 个数字即可,
Git 会向动找出对应的节点。如果找到超过一个以上的节点, Git 会显示错误信息,
这时候换长一点的数字就可以解决。
git show 文件名 显示指定文件最新版本的修改情况。也就是比较文件最新版本和前一个版本的差异。
git stash list 显示Git 暂存区的状态。
git stash pop 或者
git stash apply
取出暂存区的文件,将它们的内容合并到当前文件夹中的文件。
git stash save 这个指令会执行下列两项工作:
存储文件夹中被Git 追踪的文件和文档库中最新文件版本的差异:
把文件夹中被Git 追踪的文件还原成文档库中最新的文件版本。
git status 这个指令会执行以下3 项工作:

]. 检查Git 索引的内容,看看是否需要执行commit 存入文档库。

2. 对比文件夹中的文件和文档库中的文件,列出修改过的文件列表。

3. 列出untracked 状态的文件。
git tag 自定义的标签名称[commit 节点标识符或是标签] 指定的commit 节点贴上自定义的标签,之后就可以用这个自定义的标签来指定这个
commit 节点。
git tag -d commit 节点标签 删除自定义的commit 节点标签。
gitk –all 启动图形操作模式,如果加入“–all ”选项,表示要显示全部的分支,否则只会显示当前
操作中的分支。
上一篇:linux常用指令


下一篇:[AngularJS] 常用指令