* 080dc7a (HEAD, origin/master, origin/HEAD, master)
* bfeee2f
|\
| * 16e94ff (origin/McLongNumber, McLongNumber)
| * f50319b
| |\
这是我工作树的最后4次提交。我想重新绑定,以便我的工作树看起来像下面的例子,通过压缩最后一次提交到合并,保持树的其余部分完全按照它的方式:
* bfeee2f (HEAD, origin/master, origin/HEAD, master)
|\
| * 16e94ff (origin/McLongNumber, McLongNumber)
| * f50319b
| |\
我已尝试使用--onto -p
和-i
但没有成功。即使在我成功压缩最后一次提交时使用-p
选项,显示McLongNumber合并到主分支的树线也从日志中丢失。所以我猜一个更熟悉rebase命令的人可以帮助我解决这个问题。
答案 0 :(得分:1)
你可以这样做:
# make 'master' point to it's parent commit,
# but don't modify the index or working directory
git reset --soft HEAD^
# rewrite the commit using the stuff in the index
git commit --amend
# publish the modified commit (see WARNING below)
git push -f
注意SHA1会改变;它将不再是bfeee2f
。
重写已发布到共享存储库的历史记录几乎总是一个非常糟糕的想法。大多数共享存储库都配置为拒绝历史记录修改,即使使用-f
git push
选项也是如此。因此,无论如何,你可能无法做到你想做的事。
重写已发布历史记录的唯一时间是: