如何在选择性分期期间编辑Git"添加补丁"帅哥/差异/线条?

bar*_*art 25 git patch split commit git-add

我有一个源文件,其中添加了2个功能.为了允许采摘樱桃,我想分两个阶段:每个功能一个.到目前为止,在类似的情况下,使用git add -p我很好,提交一个功能,同时将本地文件留在最后阶段.

但是,我现在git add -p遇到了一个问题,即想要包含两个功能的编辑.即使编辑是在单独的行上,s(对于"拆分")不再想要将大块分成更小的部分......

简而言之:我无法通过这种方式分离2个功能的更改.有没有办法手动编辑补丁,例如使用vi,而不实际更改原始文件?

Dan*_*ing 26

正如艾伦所说,在期间按e(而不是s)编辑补丁git add -p.这将使用补丁的大部分启动编辑器,以便您可以手动编辑它.文中有评论说明如何正确地丢弃修改,这实际上非常简单.

当你完成后,请注意,您可以测试它,只有你刚才添加的变化git stash --keep-index.您添加到索引中的更改将被隐藏起来,您现在可以自由地测试您即将提交的更改.完成后,简单地git stash popgit stash apply将其他更改恢复.


Kou*_*sha 6

就像其他人说过的那样,你可以用它e来编辑你想要分割的大块头.

要仅添加部分块,可以从要拆分的更改中删除行.

+Line 1
+Line 2
+Line 3
Run Code Online (Sandbox Code Playgroud)

假设您希望将第1行和第3行保留在一个提交中,将第2行保留在另一个提交中.您所要做的就是删除第2行:

+Line 1
+Line 3
Run Code Online (Sandbox Code Playgroud)

这将把1号线和3号线放在你的临时区域.第2行仍将被编入索引,但不会上演.


Ala*_*avi 5

你可以e在a期间按下来修改补丁git add -p.它不会影响原始文件.