the*_*oid 6 git diff git-diff git-difftool
目前我正在处理的基于 Git 的项目,我通常总是在一个子目录中。
下面是我git log --name-only从存储库根目录的子目录运行命令时的输出。
commit 678bd5ba6fc5474c4c61406768bf6cba5937c5d1
Author: thegreendroid
Date: Mon Mar 27 09:36:24 2017 +1300
Commit message
child_dir1_from_root/file1 | 184 +--
child_dir2_from_root/file2 | 2 +-
Run Code Online (Sandbox Code Playgroud)
我如何git log才能输出类似下面的内容?这使得比较列出的文件非常容易,只需复制文件路径并运行,git diff HEAD~ {copied_file_path}而不必手动修改文件路径然后运行命令。
commit 678bd5ba6fc5474c4c61406768bf6cba5937c5d1
Author: thegreendroid
Date: Mon Mar 27 09:36:24 2017 +1300
Commit message
file1 | 184 +--
../child_dir2_from_root/file2 | 2 +-
Run Code Online (Sandbox Code Playgroud)
我查看了git log文档,但没有任何突出之处。我可以编写一个脚本来做到这一点,但我很好奇 Git 是否有内置方式。
为了使用输出中的路径git log --name-only,将选项添加--git-dir到git diff.
git --git-dir="$(git rev-parse --show-toplevel)"/.git diff HEAD~ child_dir1_from_root/file1
Run Code Online (Sandbox Code Playgroud)
为方便使用,请在配置中创建别名。
[alias]
mdiff = "! git --git-dir=\"$(git rev-parse --show-toplevel)\"/.git diff"
Run Code Online (Sandbox Code Playgroud)
git mdiff HEAD~ child_dir1_from_root/file1 现在只要当前目录属于工作树就可以工作。