【问题标题】:How to diff before each commit without going into interactive mode?如何在每次提交之前进行差异而不进入交互模式?
【发布时间】:2019-01-27 03:27:07
【问题描述】:

假设您执行 git status 并返回一个您想要一个一个检查的文件列表,然后一个一个地提交它们。

或者您对目录执行 git diff 并希望在检查后直接提交。如何用一个简单的技巧做到这一点?

【问题讨论】:

  • 这就是git add -i 的用途。这是 git add 的交互模式,让您可以逐个文件和逐个块地工作,向您展示每一步的区别。

标签: bash git diff commit


【解决方案1】:

2020 年更新:

折腾后我决定安装和使用ydiff

执行ydiff -s 在终端中并排显示差异。

不费吹灰之力就在这里看看,不要介意我的旧答案:

https://github.com/ymattw/ydiff


[ 旧 ]

提交前的 Git diff?

开箱即用的简单解决方案:

将此粘贴​​到您的 .bashrc 或 .zshrc 中:

gdiffy() { git diff $1 && git add $1 && git commit $1; }

首先它会弹出一个差异,当你关闭它时,它会允许你输入一个提交信息。

用法示例:

gdiffy config/database.yml

gdiffy .

【讨论】:

    【解决方案2】:

    注意:diff + commit 不起作用,因为您没有向索引添加任何内容。

    正如评论,git add -i or git add -p (--patch) 将为您提供差异视图,并可以添加或跳过每个差异大块。
    然后就可以提交修改后的索引了。

    【讨论】:

    • True 没有“添加”它不起作用!我现在添加了“添加”!它只是一个快速破解!
    【解决方案3】:

    如果您在 GUI 环境中。您可以从控制台启动"git gui".. 这将启动一个窗口,其中左窗格将包含已更改文件的列表。选择其中任何一个,都会显示差异。 您可以通过单击文件名左侧的图标来添加文件,然后在同一窗口中提交。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 1970-01-01
      • 2016-02-07
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 2015-05-07
      相关资源
      最近更新 更多