日常使用的Git命令汇总
Git命令汇总
缘起,自己工作中使用Git管理开发项目,这里记录平时使用到的Git的用法,主要记录的是认为重要但是不好记的命令。 注:Git Pro 是对git 使用讲解比较详细的教程。
1 Git清除未跟踪的文件
在linux系统中,可以使用 man git clean 查看手册
NAME
git-clean - Remove untracked files from the working tree
SYNOPSIS
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] [<pathspec>...]
其中的几个主要参数:
-d # 删除未跟踪目录以及目录下的文件,如果目录下包含其他git仓库文件,并不会删除(-dff可以删除)。
-f # 如果 git cofig 下的 clean.requireForce 为true,那么clean操作需要-f(--force)来强制执行。
-i # 进入交互模式
-n # 查看将要被删除的文件,并不实际删除文件
在删除前先查看有哪些文件将要被删除,运行
git clean -n
想删除当前工作目录下的未跟踪文件,但不删除文件夹运行
git clean -f
需要删除当前工作目录下的文件以及文件夹
git clean -df
2 git stash 使用
2.1 git stash 常用命令
(1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
(2)git stash list :查看stash了哪些存储
(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
(8)git stash clear :删除所有缓存的stash
2.2 git stash 存储部分文件
使用-p进行交互式操作(适合需要具体到修改的时候,例如某个文件中部分需要stash部分不需要) 通过在命令后面直接指定文件(一般情况肯定这个方便)
# 指定说明信息并stash所有cc文件的修改
$ git stash push -m "this is a partly stash test" **/*.cc
2.3 git stash pop 冲突解决
如果使用 git stash pop之后,与新的代码有冲突,想要恢复原来的,可以使用下面的操作方式。
git reset --hard
可以撤销操作,将当前分支状态恢复。
3 git 解决冲突
3.1 git stash pop还原冲突解决
冲突的文件,涉及到一些只需要保留一方,而不用费劲去解决冲突的场景。 可以使用 –ours 和–theirs。 如何识别那些事ours和theirs,一个简单的判断方法
<<<<<<< HEAD
<ours contents>
=======
<theirs contents>
>>>>>>>
从上面可以看出,======= 之前表示的是ours分支,之后表示theirs分支,只需要查看某一处冲突代码即可判断出要保留的分支。 具体命令为
$ git checkout --ours <fileName>
$ git add <fileName> //标记该冲突已解决
$ git status //查看当前冲突状态
3.2 查看冲突是否解决
在工作中,遇到一个问题,在git merge后,发生冲突,而当冲突较多的时候,逐个检查冲突,有的时候会遗漏一些文件,导致带有冲突标记的文件上传到了 Git 服务器上,如何解决这个问题呢? 使用命令
git diff --check
这个命令会检查 conflict markers(冲突标记)和whitespace errors(空格错误)