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

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


当前回答

vim-gitgolf插件可以在不离开vim编辑器的情况下使用

:GitGutterStageHunk

除此之外,它还提供了其他很酷的功能,如一些现代IDE中的差异符号列

如果只有一部分人被安排逃亡

:Gdiff

允许视觉范围选择,然后:“<,”>diffput或:“<”>diffget暂存/还原单个行更改。

其他回答

对于Atom用户,包github包括gitgui风格的交互式登台。有关快捷方式,请参阅软件包的文档。

使用Atom可以处理具有深色背景的主题(默认情况下,gitgui具有白色背景)。

从2018年答案的评论来看:

很遗憾,Visual Studio没有此选项。大约10年前,替代源代码控制系统Mercurial在Visual Studio中支持此功能。自从我使用Git以来,我真的很怀念它。

现在(2022年8月)支持:

Git Line登台发布!我们很高兴地宣布在Visual Studio 2022中发布Line登台支持。行分段,也称为交互式分段,使您能够在不同的提交中拆分更改的代码行。在提交更改之前,还可以使用行分段来检查更改。将更改后的代码行或代码段标记为通过分段进行审查,并在完成后提交分段的更改。通过将Visual Studio 2022更新到17.3版或更高版本,开始使用Line staging。阅读我们的Line登台文档,了解有关如何使用和自定义此功能的更多信息。

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

您可以使用gitadd--interactive或gitadd-p<file>,然后使用gitcommit(而不是gitcommit-a);请参阅gitadd手册页中的交互模式,或简单地按照说明进行操作。

现代Git还提供了gitcommit——交互式(和gitcommit补丁,这是交互式提交中补丁选项的快捷方式)。

如果您喜欢从GUI执行,可以使用gitgui。通过右键单击并选择以下选项,您可以简单地标记要包含在提交中的块:

为提交准备Hunk

如果您只想添加大块的某些行,也可以选择所需的行,右键单击它们,然后:

提交的暂存行

我个人觉得这比使用git add-I更容易。其他git GUI,如Qbit或GitX,也可能具有此功能。

vim-gitgolf插件可以在不离开vim编辑器的情况下使用

:GitGutterStageHunk

除此之外,它还提供了其他很酷的功能,如一些现代IDE中的差异符号列

如果只有一部分人被安排逃亡

:Gdiff

允许视觉范围选择,然后:“<,”>diffput或:“<”>diffget暂存/还原单个行更改。