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 ”选项,表示要显示全部的分支,否则只会显示当前
操作中的分支。

git常用指令整理的更多相关文章

  1. Git常用指令整理(Git Cheat Sheet)

    [Toc] 1. 创建 复制一个已创建的仓库:git clone ssh://user@domain.com/repo.git 创建一个新的本地仓库:git init 2. 本地修改 显示工作路径下已 ...

  2. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  3. (小组)Git 常用命令整理

    Git 常用命令整理 取得Git仓库 初始化一个版本仓库 git init Clone远程版本库 git clone git@xbc.me:wordpress.git 添加远程版本库origin,语法 ...

  4. 实践中的Git常用指令分析

    从工作开始,一直都在使用为知笔记(作为程序员需要知道的内容很多---不需要很深入理解,一段时不使用的东西可能就会忘记).但本周一同步不同PC端时,了解到为知会在2017/1/1开始收费! 既然收费了, ...

  5. Linux常用指令整理

    Linux常用命令整理 快捷键 [Tab] [Tab] 接在一串指令的第一个字的后面,则为"命令补全": [Tab] 接在一串指令的第二个字以后时,则为"文件补齐&quo ...

  6. GIT如何使用:大杀器!所有常用指令整理

    1 pwd 显示当前目录2 mkdir 创建目录 cd 进入文件3 git init 变成Git可以管理的仓库(千万不要修改目录下的.git隐藏文件夹)4 ls -ah 可以把.git文件显示出来5 ...

  7. 针对新手 按照使用顺序和频率整理的git常用指令

    PS:以下内容中的所有 aaaaaa 均为可替换的自定义内容 git status 查看当前版本状态,判断有没有未提交的变动 git add . 添加到暂存区(注意有个点)git commit -m ...

  8. git常用指令

    <a>github的提交方式      git status     (1)git add .--------------------存储到本地       git add -u      ...

  9. xcode svn commit is not under version control 和 git常用指令

    使用Xcode提交一个第三方库时,由于包含资源文件,总是提交不了,提示报错:XXX commit is not under version control (1) 网上查了下,得知 xcode对于sv ...

随机推荐

  1. ZOJ 3795:Grouping(缩点+最长路)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5303 题意:有n个人m条边,每条边有一个u,v,代表u的年龄大于等于v,现在要 ...

  2. async与await详解

    async和await只是编译器功能.编译器会用Task类创建代码.如果不适用这两个关键字,也可以用C#4.0和Task类实现同样的功能,只是没有那么方便. 题主在概念上确实混淆的不行,但是确实asy ...

  3. 1. 全文搜索框架 Haystack

    1.什么是Haystack Haystack是django的开源全文搜索框架(全文检索不同于特定字段的模糊查询,使用全文检索的效率更高 ),该框架支持Solr,Elasticsearch,Whoosh ...

  4. 串门赛: NOIP2016模拟赛——By Marvolo 丢脸记

    前几天liu_runda来机房颓废,顺便扔给我们一个网址,说这上面有模拟赛,让我们感兴趣的去打一打.一开始还是没打算去看一下的,但是听std说好多人都打,想了一下,还是打一打吧,打着玩,然后就丢脸了. ...

  5. shell_umask用法

    我曾经用touch命令创建一个文件script,默认的权限是"rw-r- -r- -",有的朋友就有可能问为什么是这种组合?其实,这正是umask命令捣的鬼.在linux上输入:u ...

  6. Jquery serialize()提交多个表单数据

    ajax提交多个表单数据: 先把不同的表单分别用serialize()函数,然后把序列化后的数据用+拼接提交给后台,具体例子如下 var data1 = $('#form1).serialize(); ...

  7. MLlib特征变换方法

    Spark1.6.2.2.3 PCA 算法介绍: 主成分分析是一种统计学方法,它使用正交转换从一系列可能相关的变量中提取线性无关变量集,提取出的变量集中的元素称为主成分.使用PCA方法可以对变量集合进 ...

  8. Code Review最佳实践

    我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题.包括像Google.微软这些公司,Code Review都是基本要求,代 ...

  9. response对象和request对象详解

    request方法列举:request.getAuthType() // 获取保护servlet的认证方案名(BASIC或SSL),未受保护的servlet返回的就是nullrequest.getCh ...

  10. C#编程之接口

    1.定义 接口是把公共方法和属性组合起来,以封装特定功能的一个集合.(一旦定义了接口,就可以在类中实现它.这样类就可以支持接口所指定的所有属性和成员) 注意1:接口不能单独存在.不能像实例化一个类那样 ...