当我对Git中的文件进行更改时,如何才能只提交部分更改?

例如,如何在文件中更改的30行中只提交15行?


当前回答

对于emacs,还有gitsum

其他回答

对于emacs,还有gitsum

如果是在Windows平台上,我认为gitgui是一个很好的工具,可以从未分页的文件中暂存/提交几行代码

1.愚蠢:

从未标记的更改部分选择文件右键单击需要暂存的代码块选择要提交的阶段Hunk

2.逐行:

从未标记的更改部分选择文件选择要暂存的行右键单击并选择要提交的阶段行

3.如果您想暂存除几行之外的完整文件:

从未标记的更改部分选择文件按Ctrl+T(要提交的阶段文件)所选文件现在移动到分段更改部分选择要暂存的行右键单击并选择UnStage Lines进行提交

git-cola是一个很棒的GUI,并且内置了这个功能。只需选择要分段的行,然后按S。如果没有选择,则将分段完整的大块。

我相信git add-e myfile是最简单的方法(至少是我的首选),因为它只需打开一个文本编辑器,让您选择要暂存的行和不暂存的行。关于编辑命令:

添加的内容:

添加的内容由以“+”开头的行表示。您可以通过删除添加行来防止暂存任何添加行。

删除的内容:

删除的内容由以“-”开头的行表示。通过将“-”转换为“”(空格),可以防止临时删除它们。

修改内容:

修改后的内容由“-”行(删除旧内容)和“+”行(添加替换内容)表示。您可以通过将“-”行转换为“”并删除“+”来防止暂存修改线请注意,仅修改其中的一半可能会对索引带来混乱的变化。

git-add的所有细节都可以在git-help-add上找到

如果你碰巧在使用VS代码,那你就幸运了。选择要暂存的范围,然后使用Git:Sstage Selected Ranges暂存它们,如果需要,请提交。

我录制了一张gif图来演示我的意思: