1

我正在尝试学习如何在历史中拆分提交。我使用这个页面来指导我: http: //git-scm.com/docs/git-rebase.html#_splitting_commits我有两个提交,所以我输入git rebase -i <hashOfTheCommit>^. 我将提交的行从 更改pickedit。然后我输入git reset HEAD^. 到目前为止,一切都很好。现在,提交引入的更改包括file1在新目录中添加一个。

该文件的内容基本上是两行:

commit line1

commit line2 

所以我想把这个提交分成两个提交,每个都引入一行。但是在我输入之后git add -p file1,我只得到响应No changes.并且文件没有添加到索引中。我希望被带入补丁模式,但它不会发生。

4

2 回答 2

0

If even a git add --interactive doesn't work either, as a guess, it might be because the all file is already in the index.

If so, try a:

git reset HEAD -- file
git add -p -- file
于 2013-07-03T11:57:18.707 回答
0

您也可以将 GUI 用于此任务(它不能作为命令行自动执行,但它可能适用于您的情况)。

只需为要拆分的提交创建一个分支点并签出该分支(我们将此分支称为 splitcommit)。打开 GUI ( git gui) 并选择“Ammend last commit”(它位于提交描述文本框的上方)。选择该选项后,您将处于与创建相关提交相同的情况,因此您可以选择文件并暂存/取消暂存所需的行(选择显示文件内容的框上的行并根据需要单击舞台/取消舞台)。

准备好后,单击提交。这将修改您的提交,并且您取消暂存的行将显示为未添加到索引的更改。然后,您可以使用这些行创建一个新提交(它将添加到分支splitcommit)。如果您想使用新的拆分提交重做原始分支的历史记录,请签出该分支并重新设置为分支splitcommit

这不是很简单,但它不是一个非常复杂的过程,不需要使用非常高级的 Git 命令。

于 2013-07-03T14:20:21.637 回答