我习惯在git中返回旧的提交并修改我的工作目录。例如我有一系列提交
A<-B<-C<-D<-E<-F
在提交B中,我添加了一些文本文件。现在我想在该提交中添加更多文本文件并将其记录在那里。
我听说git rebase和git reset --soft应该在这里使用但是没有理解如何在实践中使用它们? 我应该使用以下命令
git rebase HEAD^5
答案 0 :(得分:3)
您可以使用
git rebase -i HEAD~5
这会打开一个窗口,其中有几行看起来像
pick 362trhy4
pick ewq3w5y4
pick 34642wfg
pick 34265wey
pick 34652366
rebase blabla onto blabla
请注意,提交哈希值只是组成。您要执行的操作是继续编辑要提交的提交,并将pick
更改为edit
。然后退出编辑器(nano,vim等)并确认。
它会让你回归&#39;到您要编辑的提交。您现在可以自由地进行更改。完成后,git add
或git rm
已更改的文件,提交修改它们(因为您想要更改提交)
git commit --amend -m "new commit message"
请注意,这将更改您的提交哈希值。然后做
git rebase --continue`
这将使rebase过程继续进行。因为所有其他提交只是pick
s,git会尝试将它们重新应用到您编辑的提交中。
如果没有冲突:太好了,你现在已经完成了。
如果他们这样做:以您喜欢的方式解决冲突,并使用git add
或git rm
标记已解决的冲突。然后再次git rebase --continue
。重复此步骤,直到解决所有冲突。你现在应该回到你开始的地方,但历史已经改变了。