Git速查表
git日志
以易于查看的方式显示全部日志
$ git log --decorate --oneline --graph
我希望能够显示更改后的文件。
$ git log --stat
我只想显示修改了文件A.cpp的提交记录
$ git log A.cpp
如果加上 –stat选项可能会更加清楚。
请注意,不再显示N文件更改的说明。
我只想显示带有”Test”注释的commit。
$ git log --grep Test
我想要同时查看多个分支的日志。
$ git log branchA branchB branchC
$ git log --all
$ git log --remotes
–all表示的是远程和本地的所有内容,–remotes则只显示远程内容。
将文件添加到git中
我想取消舞台化
$ git reset HEAD filename
当我们已经在stage中添加了某些内容时,如果我们不想提交它们,我们就会想要取消stage操作。在这种情况下,可以使用unstage。
HEAD似乎还有其他方便的用途。
比如,可以将这个文件恢复到以前的状态。
切换到某个分支或提交
我想创建一个分支并检出它。
$ git checkout -b new_branch <src_branch>
在创建新的分支时,比git branch更方便易用。
由于存在未提交的文件,无法进行checkout。
$ git stash; git checkout branch
$ git checkout -f branch
如果你想保留尚未提交的数据,你可以使用上面的命令;如果你不想保留,可以使用下面的命令,也许是个好选择。
stash是一个强大的命令,可以将尚未提交的文件保存在堆栈中,稍后会详细介绍。
git分支
我想要移动分支的HEAD位置。
$ git branch -f branch_name dst_commit
我所在的分支无法移动。
我想知道远程的分支。
$ git branch -a
$ git branch -r
前者同时显示远程和本地选项,后者只显示远程选项。
更新 git 仓库
已经不存在的远程分支仍然存在很久。
$ git fetch --prune
git差异
我想要看到巧妙地進行單詞級別的diff。
$ git diff --color-words
合并git
在冲突的陪伴中
$ git merge-tool
删除的冲突
$ git rm --cached file
$ git rm file
前者只删除对git的注册,后者同时删除文件的实体。
我想要将非快速播放设为启用。 (Wǒ .)
$ git marge --no-ff branch_name
由于在快进操作中无法从日志中获取分支合并的存在,所以常常用于将更改合并到开发分支。
储藏暂存
将尚未提交的文件移动到堆栈上,并恢复到最新的提交状态。
$ git stash
$ git stash pop
$ git stash clear
可以使用stash来保存东西,使用pop来取出。使用clear可以删除堆栈上的内容。
例如,当你在切换分支之前不小心开始了一个任务的时候,你可以按照stash -> checkout -> stash pop(自动合并)的步骤来使用。
忽略了的文件也想要储存起来
$ git stash -a
可以用于当测试不通过时依赖于被忽略的文件
我想处理多个stack。
$ git stash list
$ git stash pop --index stash@{0}
使用列表来显示和弹出指定的堆栈元素。
用中文将以下内容表达得通顺:
git责备
我想知道是誰將這行字改動了。
$ git blame -L 1,1 A.cpp
结果
^9b6ca83 (soranoba 2014-06-25 14:49:25 +0900 1) #include<iostream>
可以使用-L start, end来指定行的范围。
结果显示为“提交哈希值(可以通过checkout哈希值跳转),提交者和内容”。
清除 git
我想回到`git clone`时的状态。
$ git clean -f -x -d
// 確認をする時はこちら
$ git clean -n -x -d
这是对于常见的那种外部模块的一种解决办法。我认为它不能用于子模块,所以不一定与git clone时的状态完全相同,请注意。
实际上,这是一个用于删除与git没有关联的文件/文件夹的命令。