增加git hunk粒度

时间:2016-01-05 10:52:34

标签: git

我通常会使用git add -p添加更改,并且很多时候会有大量的代码块,用空行分隔。

然而,git不会再split这个大块头,我不得不求助于手动编辑。

如何增加帅哥的粒度,使每个代码块都在一个单独的大块中?

编辑:这是一个与Git: show more context when using git add -i or git add -e?不同的问题,因为我不打算增加每个大块的上下文,而是增加帅哥的数量。

3 个答案:

答案 0 :(得分:8)

无法完成,

您可以在add -p中执行以下选项:

y - stage this hunk
n - do not stage this hunk
q - quit, do not stage this hunk nor any of the remaining ones
a - stage this and all the remaining hunks in the file
d - do not stage this hunk nor any of the remaining hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help

使用s后,它会选择可被视为独立更改的代码块。如果你想要拆分更多,你将不得不使用e编辑大块,然后将其添加回舞台区域。

要点:

要拆分帅哥,请使用s标志 如果您需要将其拆分为更小的块,则需要使用e选项手动编辑它。

答案 1 :(得分:3)

作为@codeWizard said in his answer,git不支持您想要的内容,因此无法在git add中完成。

现在,您可以自己编写一个执行以下操作的脚本:

  1. 将您当地更改的版本复制到树外的某个地方
  2. git checkout -- <changedfile>将修改后的文件置于未修改状态
  3. 编写您自己的用户界面,以选择您要立即添加的文件中的范围
  4. 将修改添加到树中。
  5. git commit
  6. 如果需要,请再次转到3.

答案 2 :(得分:2)

git gui可让您选择要播放的特定行。

在您的git存储库中打开git gui,然后右键单击所需的行&gt; “承诺的阶段线”。

现在,它不会让你编辑文件(我希望它可以在你喜欢的编辑器中打开一个临时文件)。要解决此问题,您只需使用提醒标记提交消息:

AMENDME: Add x
do not forget to rename thing

完成编码后,您可以使用git rebase -i <original branch>,使用edit命令标记“AMENDME”提交并修改该提交。