我如何git rebase第一次提交?

lxs*_*lxs 61 git git-rebase

我曾经git init创建一个新的回购,然后做了三次提交.现在我想改变回去修改我的第一次提交,但如果我这样做git rebase -i HEAD~3抱怨!如果我尝试相同HEAD~2然后它有点工作,但只允许我重新排列最后两个提交.

如何在有任何提交之前引用'commit'或者返回并插入空提交?

tor*_*rek 99

简单的方法,最近有足够的git(这已经很久了,所以你应该有这个):

git rebase -i --root
Run Code Online (Sandbox Code Playgroud)

正如twalberg在评论中指出的那样,另一种简单的方法是使用git checkout --orphan设置来创建新的根提交,您可以在其上复制旧的提交.(rebase -i --root无论如何,这最终会在内部进行.)

  • 您到底要在说明书中编辑什么内容?您应该有一个提交列表,最旧的位于顶部,并为每个提交命令“pick”。将*第二个*“pick”更改为“squash”或“fixup”,写出说明表,退出编辑器,Git 就会完成这项工作。 (3认同)

swo*_*ing 23

如果您想对提交中已有的文件进行更改、编辑作者/消息等,torek 的答案很好。但是如果您想拆分提交或类似的内容,那么您很可能会遇到麻烦,因为你不能git reset HEAD~从最初的提交开始。

为了实现这一点,您可以插入一个空的初始提交,如下所示:

git checkout --orphan empty-initial-commit
git rm -r --cached .
git clean -d -f
git commit --allow-empty -m 'Empty initial commit'
git checkout <branch>
git rebase empty-initial-commit
git branch -d empty-initial-commit
Run Code Online (Sandbox Code Playgroud)

然后你可以做git rebase -i,编辑提交(第一个非空提交),然后git reset HEAD~像平常一样做。