这经常发生在我身上:
我在一两天内同时处理了几个相关的更改,当需要提交时,我最终忘记了特定文件中的更改.(这只是一个个人的git repo,所以我可以在提交中有多个更新.)
有没有办法预览我的本地文件(即将签入)和该文件的最后一次提交之间的更改?
就像是:
git diff --changed /myfile.txt
Run Code Online (Sandbox Code Playgroud)
它会打印出如下内容:
line 23
(last commit): var = 2+2
(current): var = myfunction() + 2
line 149
(last commit): return var
(current): return var / 7
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以快速查看自上次签入以来我在该文件中所做的工作.
Amb*_*ber 677
如果你想看看你还没有git add编辑过:
git diff myfile.txt
Run Code Online (Sandbox Code Playgroud)
或者如果您想查看已添加的更改
git diff --cached myfile.txt
Run Code Online (Sandbox Code Playgroud)
oua*_*uah 62
git diff HEAD file
Run Code Online (Sandbox Code Playgroud)
将显示您在上次提交时添加到工作树中的更改.将显示所有更改(暂存或未暂存).
ken*_*orb 16
要检查本地差异:
git diff myfile.txt
Run Code Online (Sandbox Code Playgroud)
或者您可以使用diff工具(如果您想要还原某些更改):
git difftool myfile.txt
Run Code Online (Sandbox Code Playgroud)
要git difftool更有效地使用,请安装和使用您喜欢的GUI工具,如Meld,DiffMerge或OpenDiff.
注意:您还可以使用.(而不是文件名)来查看当前目录更改.
为了检查每行的更改,请使用:git blame这将显示在哪个提交中提交的行.
要在提交之前查看实际文件(master您的分支在哪里),请运行:
git show master:path/my_file
Run Code Online (Sandbox Code Playgroud)
ani*_*bet 14
另一种考虑是否要将文件与最后提交进行比较的技术:
git diff master myfile.txt
Run Code Online (Sandbox Code Playgroud)
这种技术的优势在于您还可以与倒数第二次提交进行比较:
git diff master^ myfile.txt
Run Code Online (Sandbox Code Playgroud)
那之前的一个:
git diff master^^ myfile.txt
Run Code Online (Sandbox Code Playgroud)
如果您不在主分支上,也可以用'〜'代替插入符号'^'和'分支名'代表'master'.
Lak*_*sad 13
我认为这是保证GUI的完美用例. - 虽然我完全理解它在命令行中也可以很好地实现.
就个人而言,我的每一次承诺,我都是从git-gui做的.如果有意义的话,我可以在其中使用单独的hunks/lines进行多次原子提交.
Gut Gui可以在格式良好的彩色界面中查看差异,相当清淡.看起来这也是你应该结账的东西.