如何在不进入交互模式的情况下在每次提交之前进行差异化?
How to diff before each commit without going into interactive mode?
假设您执行 git status 并返回一个文件列表,您想要一个一个地检查这些文件,然后一个一个地提交它们。
或者您在目录上进行了 git 比较,并希望在检查后直接提交。如何用一个简单的技巧做到这一点?
2020 年更新:
经过一番折腾,我决定安装并使用 ydiff
。
执行 ydiff -s
在终端中并排显示差异。
不用费脑子在这里查看,不要介意我的旧答案:
https://github.com/ymattw/ydiff
[旧
]
Git 提交之前的差异?
跳出框框思考的简单解决方案:
将此粘贴到您的 .bashrc 或 .zshrc 中:
gdiffy() { git diff && git add && git commit ; }
首先它会弹出一个差异,当你关闭它时,它会让你输入一个提交信息。
用法示例:
gdiffy config/database.yml
或
gdiffy .
如果您处于 GUI 环境中。您可以从控制台启动 "git gui"
..
这将启动 window,其中左窗格将包含已更改文件的列表。选择其中任何一个,都会向您显示差异。
您可以通过单击文件名左侧的图标来添加文件,然后从相同的 window.
提交它
希望对您有所帮助。
注意:diff + commit 不起作用,因为您没有向索引添加任何内容。
如评论所述,git add -i
or git add -p
(--patch
) 将为您提供差异视图,并可以添加或跳过每个差异块。
然后你可以提交修改后的索引。
假设您执行 git status 并返回一个文件列表,您想要一个一个地检查这些文件,然后一个一个地提交它们。
或者您在目录上进行了 git 比较,并希望在检查后直接提交。如何用一个简单的技巧做到这一点?
2020 年更新:
经过一番折腾,我决定安装并使用 ydiff
。
执行 ydiff -s
在终端中并排显示差异。
不用费脑子在这里查看,不要介意我的旧答案:
https://github.com/ymattw/ydiff
[旧 ]
Git 提交之前的差异?
跳出框框思考的简单解决方案:
将此粘贴到您的 .bashrc 或 .zshrc 中:
gdiffy() { git diff && git add && git commit ; }
首先它会弹出一个差异,当你关闭它时,它会让你输入一个提交信息。
用法示例:
gdiffy config/database.yml
或
gdiffy .
如果您处于 GUI 环境中。您可以从控制台启动 "git gui"
..
这将启动 window,其中左窗格将包含已更改文件的列表。选择其中任何一个,都会向您显示差异。
您可以通过单击文件名左侧的图标来添加文件,然后从相同的 window.
希望对您有所帮助。
注意:diff + commit 不起作用,因为您没有向索引添加任何内容。
如评论所述,git add -i
or git add -p
(--patch
) 将为您提供差异视图,并可以添加或跳过每个差异块。
然后你可以提交修改后的索引。