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

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


当前回答

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

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

其他回答

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

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

1.愚蠢:

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

2.逐行:

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

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

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

如果你正在使用vim,你可能想尝试一个叫做逃犯的优秀插件。

您可以使用:Gdiff查看文件在工作副本和索引之间的差异,然后使用经典的vim diff命令(如dp)将行或块添加到索引中。将修改保存在索引中,并使用:Gcommit提交,就完成了。

这里有非常好的介绍性放映(特别是第2部分)。

如果您使用emacs,请查看Magit,它为emacs提供了一个git接口。它非常支持分段大块(文件的一部分)。

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

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