我之前通过创建一个克隆并在克隆中执行 rebase 来完成此操作,但我怀疑我可以在单独的分支上安全地执行此操作。
我有一个功能分支feat-x
,上面有大约 25 个提交。我想(安全地)将其中的几个压缩在一起。
(我说“安全”是因为前几次我压扁的时候我没有把它弄好——但是在克隆中工作,所以把它扔掉,直到我想出正确的咒语。)
什么样的命令序列会给我feat-x-exp
一个副本,feat-x
这样我就可以在不干扰的情况下尝试挤压feat-x
?
我想你只想做:
git checkout -b feat-x-exp feat-x
这将检查feat-x
您可以试验的副本。一旦你离开了feat-x
分支,你的 rebase 命令不会影响原始分支(只要你避免使用两个参数形式,这是在 rebase 之前签出的快捷方式)。
如果你搞砸了,你可以回到原来分支的状态:
git reset --hard feat-x
如果您的实验成功,您可以移动feat-x
以匹配feat-x-exp
并删除实验分支:
git checkout feat-x
git reset --hard feat-x-exp
git branch -d feat-x-exp