我经常发现自己想要打开在某个提交中更改的所有文件。我目前的解决方案就是这个,别名:
$EDITOR $(git diff --name-only --relative <commit names>)
哪个效果很好,但是当我在子目录中时,它不会打开在该目录之外更改的任何文件,因为git diff --name-only --relative
只输出当前目录中更改的文件,而不是整个回购。是否有一个标记我可以传递给git diff
以使其包含回购中的所有已更改文件,即使使用--relative
?
答案 0 :(得分:1)
Git自己的aliases允许您通过使用前导感叹号定义别名来指定shell命令。这些shell命令别名总是从存储库根目录执行,因此您可以通过在.gitconfig
中定义别名来将它们与您已经使用的命令结合使用:
[alias]
review-diff = "!edit() { $EDITOR $(git diff --name-only --relative \"$@\"); }; edit"
然后,您可以从存储库中的任何位置运行git review-diff
。
(注意:我不确定版本差异何时,但是较新版本的Git似乎允许您跳过别名中的函数包装器,从而使设置更简单:)
[alias]
review-diff = "!$EDITOR $(git diff --name-only --relative \"$@\")"