我是一名 Perforce 资深人士,他正在将我们的组织转移到 git。我坚持的一件事是如何管理大型提交(我不是同时指代许多不同的更改——我知道这不是最佳的——而是一次影响许多文件的单一类型的更改)。例如,假设我向一个在几十个文件中调用的函数添加了一个参数。使用带有可视差异工具的 git 命令行,在提交之前查看所有更改的最佳方法是什么?实际上,我可能会在一段时间内展开此审查,或者在审查我的一些文件后进行一些更改,然后再返回未审查的文件。
简而言之,我正在寻找一种方法,可以一次轻松地 difftool 文件,然后将它们标记为已审核。我知道那里有很多 UI 解决方案,但我对原生 git 解决方案很感兴趣。
被拒绝的想法:
- 保持所有文件未暂存,然后一次对它们进行一个比较,如果我喜欢该差异,则暂存一个文件。这个想法的问题在于,输入每个文件的完整路径来进行比较(然后暂存它)很麻烦,因为文件可能会散布在许多路径中。
- 使用交互式添加模式 (
git add -i
)。这个想法的问题是你不能区分未暂存的文件。这意味着要使其工作,我将不得不做一些奇怪的旋转,在其中我会暂存所有内容,然后在文件通过我的审查后,我实际上会取消暂存它,最后我会在提交之前交换暂存和未暂存的文件。总的。 - 使用补丁模式。这很酷,但似乎不适用于视觉差异工具。
- 使用
git gui
. 这个实际上非常接近,但我还没有找到一种方法可以通过双击或热键轻松地在每个文件上运行 difftool。
具有讽刺意味的是,git add -i
如果它不颠倒差异的含义,它将完全满足我的需求。即,默认情况下,diff 适用于未分级的更改,但在交互式添加期间,diff 仅适用于分级更改。这让我感到困惑,特别是因为它的重点git add
是暂存文件。
感谢所有想法!谢谢您的帮助。