当我对Git中的文件进行更改时,如何才能只提交部分更改?
例如,如何在文件中更改的30行中只提交15行?
当我对Git中的文件进行更改时,如何才能只提交部分更改?
例如,如何在文件中更改的30行中只提交15行?
当前回答
加上前面的回答,如果您更喜欢使用命令行,输入git add-e myfile可以让您选择逐行选择要提交的内容,因为此命令将打开一个具有不同之处的编辑器,如下所示:
正如你可能知道的那样,以+开头的行是加法,以-开头的行则是删除。因此:
要不进行添加,只需删除该行。要不进行删除,只需用空格替换。
这就是git add-h所说的通过这种方式添加文件(修补文件):
添加的内容添加的内容由以“+”开头的行表示。你可以通过删除添加行来防止暂存任何添加行。删除的内容:删除的内容由以“-”开头的行表示。你可以通过将“-”转换为“”来防止临时删除(空格)。修改内容:修改的内容由“-”行表示(删除旧的内容),后跟“+”行(添加替换内容)。您可以通过将“-”行转换为“”,并删除“+”行。请注意,仅修改这对组合很可能会给指数带来令人困惑的变化。
注意:不要更改文件的内容,这不是一个好地方。只需更改删除或添加行的运算符即可。
其他回答
gitgui在diff视图下提供了此功能。只需右键单击您感兴趣的行,就会看到一个“stage this line to commit”菜单项。
您可以使用gitadd--interactive或gitadd-p<file>,然后使用gitcommit(而不是gitcommit-a);请参阅gitadd手册页中的交互模式,或简单地按照说明进行操作。
现代Git还提供了gitcommit——交互式(和gitcommit补丁,这是交互式提交中补丁选项的快捷方式)。
如果您喜欢从GUI执行,可以使用gitgui。通过右键单击并选择以下选项,您可以简单地标记要包含在提交中的块:
为提交准备Hunk
如果您只想添加大块的某些行,也可以选择所需的行,右键单击它们,然后:
提交的暂存行
我个人觉得这比使用git add-I更容易。其他git GUI,如Qbit或GitX,也可能具有此功能。
值得注意的是,要为新文件使用git-add--patch,您需要首先使用git-add--intent添加文件到索引:
git add -N file
git add -p file
vim-gitgolf插件可以在不离开vim编辑器的情况下使用
:GitGutterStageHunk
除此之外,它还提供了其他很酷的功能,如一些现代IDE中的差异符号列
如果只有一部分人被安排逃亡
:Gdiff
允许视觉范围选择,然后:“<,”>diffput或:“<”>diffget暂存/还原单个行更改。
对于使用Git扩展的用户:
在提交窗口中,选择要部分提交的文件,然后在右窗格中选择要提交的文本,然后右键单击所选内容并从上下文菜单中选择“暂存选定行”。