最近软件项目管理课上教我们使用了CVS版本控制工具,这个工具和eclipse配合一起使用比较好,而且是图形化的界面,比较方便。
但是在不用eclipse的情况下,最流行的版本控制工具就是GitHub了,当然别的也有很多,包括国产的开源中国的和CSDN的都可以,而且都是基于git开发,所以以下命令通用。
创建
复制一个已创建的仓库:
1 |
<span class="pln">$ git clone ssh</span><span class="pun">:</span><span class="com">//user@domain.com/repo.git</span> |
创建一个新的本地仓库:
1 |
<span class="pln">$ git init</span> |
本地修改
显示工作路径下已修改的文件:
1 |
<span class="pln">$ git status</span> |
显示与上次提交版本文件的不同:
1 |
<span class="pln">$ git diff</span> |
把当前所有修改添加到下次提交中:
1 |
<span class="pln">$ git add</span> |
把对某个文件的修改添加到下次提交中:
1 |
<span class="pln">$ git add </span><span class="pun">-</span><span class="pln">p </span><span class="str"><file></span> |
提交本地的所有修改:
1 |
<span class="pln">$ git commit </span><span class="pun">-</span><span class="pln">a</span> |
提交之前已标记的变化:
1 |
<span class="pln">$ git commit</span> |
附加消息提交:
1 |
<span class="pln">$ git commit </span><span class="pun">-</span><span class="pln">m </span><span class="str">'message here'</span> |
提交,并将提交时间设置为之前的某个日期:
1 |
<span class="pln">git commit </span><span class="pun">--</span><span class="pln">date</span><span class="pun">=</span><span class="str">"`date --date='n day ago'`"</span> <span class="pun">-</span><span class="pln">am </span><span class="str">"Commit Message"</span> |
修改上次提交
请勿修改已发布的提交记录!
1 |
<span class="pln">$ git commit </span><span class="pun">--</span><span class="pln">amend</span> |
把当前分支中未提交的修改移动到其他分支
1 2 3 |
<span class="pln">git stash git checkout branch2 git stash pop</span> |
搜索
从当前目录的所有文件中查找文本内容:
1 |
<span class="pln">$ git grep </span><span class="str">"Hello"</span> |
在某一版本中搜索文本:
1 |
<span class="pln">$ git grep </span><span class="str">"Hello"</span><span class="pln"> v2</span><span class="pun">.</span><span class="lit">5</span> |
提交历史
从最新提交开始,显示所有的提交记录(显示hash, 作者信息,提交的标题和时间):
1 |
<span class="pln">$ git log</span> |
显示所有提交(仅显示提交的hash和message):
1 |
<span class="pln">$ git log </span><span class="pun">--</span><span class="pln">oneline</span> |
显示某个用户的所有提交:
1 |
<span class="pln">$ git log </span><span class="pun">--</span><span class="pln">author</span><span class="pun">=</span><span class="str">"username"</span> |
显示某个文件的所有修改:
1 |
<span class="pln">$ git log </span><span class="pun">-</span><span class="pln">p </span><span class="str"><file></span> |
谁,在什么时间,修改了文件的什么内容:
1 |
<span class="pln">$ git blame </span><span class="str"><file></span> |
分支与标签
列出所有的分支:
1 |
<span class="pln">$ git branch</span> |
切换分支:
1 |
<span class="pln">$ git checkout </span><span class="str"><branch></span> |
创建并切换到新分支:
1 |
<span class="pln">$ git checkout </span><span class="pun">-</span><span class="pln">b </span><span class="str"><branch></span> |
基于当前分支创建新分支:
1 |
<span class="pln">$ git branch </span><span class="pun"><</span><span class="kwd">new</span><span class="pun">-</span><span class="pln">branch</span><span class="pun">></span> |
基于远程分支创建新的可追溯的分支:
1 |
<span class="pln">$ git branch </span><span class="pun">--</span><span class="pln">track </span><span class="pun"><</span><span class="kwd">new</span><span class="pun">-</span><span class="pln">branch</span><span class="pun">></span> <span class="pun"><</span><span class="pln">remote</span><span class="pun">-</span><span class="pln">branch</span><span class="pun">></span> |
删除本地分支:
1 |
<span class="pln">$ git branch </span><span class="pun">-</span><span class="pln">d </span><span class="str"><branch></span> |
给当前版本打标签:
1 |
<span class="pln">$ git tag </span><span class="pun"><</span><span class="pln">tag</span><span class="pun">-</span><span class="pln">name</span><span class="pun">></span> |
更新与发布
列出当前配置的远程端:
1 |
<span class="pln">$ git remote </span><span class="pun">-</span><span class="pln">v</span> |
显示远程端的信息:
1 |
<span class="pln">$ git remote show </span><span class="str"><remote></span> |
添加新的远程端:
1 |
<span class="pln">$ git remote add </span><span class="str"><remote></span> <span class="str"><url></span> |
下载远程端版本,但不合并到HEAD中:
1 |
<span class="pln">$ git fetch </span><span class="str"><remote></span> |
下载远程端版本,并自动与HEAD版本合并:
1 |
<span class="pln">$ git remote pull </span><span class="str"><remote></span> <span class="str"><url></span> |
将远程端版本合并到本地版本中:
1 |
<span class="pln">$ git pull origin master</span> |
将本地版本发布到远程端:
1 |
<span class="pln">$ git push remote </span><span class="str"><remote></span> <span class="str"><branch></span> |
删除远程端分支:
1 2 3 |
<span class="pln">$ git push </span><span class="str"><remote></span> <span class="pun">:<</span><span class="pln">branch</span><span class="pun">></span> <span class="pun">(</span><span class="pln">since </span><span class="typ">Git</span><span class="pln"> v1</span><span class="pun">.</span><span class="lit">5.0</span><span class="pun">)</span> <span class="kwd">or</span><span class="pln"> git push </span><span class="str"><remote></span> <span class="pun">--</span><span class="kwd">delete</span> <span class="str"><branch></span> <span class="pun">(</span><span class="pln">since </span><span class="typ">Git</span><span class="pln"> v1</span><span class="pun">.</span><span class="lit">7.0</span><span class="pun">)</span> |
发布标签:
1 |
<span class="pln">$ git push </span><span class="pun">--</span><span class="pln">tags</span> |
合并与重置
将分支合并到当前HEAD中:
1 |
<span class="pln">$ git merge </span><span class="str"><branch></span> |
将当前HEAD版本重置到分支中:
请勿重置已发布的提交!
1 |
<span class="pln">$ git rebase </span><span class="str"><branch></span> |
退出重置:
1 |
<span class="pln">$ git rebase </span><span class="pun">--</span><span class="pln">abort</span> |
解决冲突后继续重置:
1 |
<span class="pln">$ git rebase </span><span class="pun">--</span><span class="kwd">continue</span> |
使用配置好的merge tool 解决冲突:
1 |
<span class="pln">$ git mergetool</span> |
在编辑器中手动解决冲突后,标记文件为已解决冲突
1 |
<span class="pln">$ git add </span><span class="pun"><</span><span class="pln">resolved</span><span class="pun">-</span><span class="pln">file</span><span class="pun">></span> |
1 |
<span class="pln">$ git rm </span><span class="pun"><</span><span class="pln">resolved</span><span class="pun">-</span><span class="pln">file</span><span class="pun">></span> |
撤销
放弃工作目录下的所有修改:
1 |
<span class="pln">$ git reset </span><span class="pun">--</span><span class="pln">hard HEAD</span> |
移除缓存区的所有文件(i.e. 撤销上次git add
):
1 |
<span class="pln">$ git reset HEAD</span> |
放弃某个文件的所有本地修改:
1 |
<span class="pln">$ git checkout HEAD </span><span class="str"><file></span> |
重置一个提交(通过创建一个截然不同的新提交)
1 |
<span class="pln">$ git revert </span><span class="str"><commit></span> |
将HEAD重置到指定的版本,并抛弃该版本之后的所有修改:
1 |
<span class="pln">$ git reset </span><span class="pun">--</span><span class="pln">hard </span><span class="str"><commit></span> |
将HEAD重置到上一次提交的版本,并将之后的修改标记为未添加到缓存区的修改:
1 |
<span class="pln">$ git reset </span><span class="str"><commit></span> |
将HEAD重置到上一次提交的版本,并保留未提交的本地修改:
1 |
<span class="pln">$ git reset </span><span class="pun">--</span><span class="pln">keep </span><span class="str"><commit></span> |
作者:flyhigher139
文章源自:https://github.com/flyhigher139/Git-Cheat-Sheet/blob/master/Git%20Cheat%20Sheet-Zh.md
Comments | NOTHING