Git status 会给我已更改的文件列表,其中我有一些已更改但我不想提交,只需将其保留在工作目录中即可。令人烦恼的是,在提交之前,如果有新的更改,我必须扫描这些文件的差异,或者这些修改只是我知道的并且不想提交的修改。
有没有办法告诉 Git 这些修改不要提交,但让我知道是否有任何其他更改?虽然恐怕不存在需要另一种索引来放置这些“不想暂存此更改”版本文件的情况,但如果有类似的情况,请告诉我。
我有一些已更改,但我不想提交,只需将其按原样保留在工作目录中即可。...有没有办法告诉 Git 这些修改不要提交,但让我知道是否有任何其他更改?
您绝对应该在分支上签入这些临时更改,同时将其作为单独的临时提交进行处理(并使用明确表明它们是临时的提交消息)。然而,稍后,当完成分支上的工作时,可以删除这些临时提交。
假设您关心的更改是各种调试打印语句(使用printf、_logger.info或console.log任何适当的日志记录机制),分布在多个文件中的各处。
但不为这些临时更改创建提交是错误的,因为
作为一个例子,假设您一直在努力添加一些foo功能,对bar 进行了一些修改,现在准备完成工作。您已经创建了几个临时提交(全部以字符“====” 1开头和结尾),因此要删除这些临时提交,您需要启动交互式变基并显示以下列表:
pick 10001 Started implementing foo
pick 10002 ==== debug foo ====
pick 10003 Finished implementing foo
pick 10004 Improved bar
pick 10005 ==== debug bar ====
pick 10006 ==== more foo debug ====
pick 10007 Removed unused baz
pick 10008 ==== more bar and foo debug ====
Run Code Online (Sandbox Code Playgroud)
削减到以下内容很简单:
pick 10001 Started implementing foo
pick 10003 Finished implementing foo
pick 10004 Improved bar
pick 10007 Removed unused baz
Run Code Online (Sandbox Code Playgroud)
满足公理 2。
如果您将提交和分支视为不可变对象,那么您就错过了 git 的绝大多数好处。
将临时更改作为临时提交进行签入的好处有很多:
git log和中的其他提交具有相同的可见性gitk。因此,您不需要“另一种索引”,事实上临时提交是并且应该被视为正常提交。唯一的“特殊”处理是使提交消息足够不同,使它们作为临时提交脱颖而出,并在最后通过交互式变基过滤掉它们。
使用我的脚本git-resolve-conflict-using-kdiff3。KDiff3自动解析在更改的上方/下方行旁边删除的行(如果需要手动解决冲突,KDiff3 也是一个很棒的工具)。
1您可以使用任何您想要的指标,“====”只是一个建议。在进行交互式变基时,它只需要在提交列表中清楚地脱颖而出即可。