我如何将最后的N承诺集成到一个承诺中?


当前回答

方法1 如果你有很多承诺

git rebase -i master 然后按一下键盘“i”来编辑

你会看到这样的:

pick etc1
pick etc2
pick etc2

用“f”取代“ pick”这个词,然后按 esc y :wq。

pick etc1 //this commit will the one commit
f etc2
f etc2

按下这个命令

git push origin +head

方法2 如果你有少数承诺,你可以这样做去删除承诺,你必须这样做去删除你的第二承诺等等。

git reset --soft HEAD^1 // or git reset --soft head~1
git commit --amend //then press `:wq` 
git push -f

方法 3 如果你已经有一个承诺,你不想提交另一个承诺更多

git add files...
git commit --amend  //then press `:wq`
git push origin +head

其他回答

如果你在一个遥远的分支(所谓的功能分支)从一个黄金储备(黄金_repo_name),那么这里是技巧将你的承诺分成一个:

Checkout the golden repo git checkout golden_repo_name 创建一个新的分支从它(黄金 repo)如下 git checkout -b dev-branch Squash merge 与您的本地分支 你已经 git merge --squash 功能分支 承诺您的变化(这将是唯一的承诺在 dev-branch) git commit -m "My feature complete" 将分支推到您的本地存储库 git push 起源 d

要避免在重定向同一分支中的承诺时不得不解决任何合并冲突,您可以使用下列命令:

git rebase -i <last commit id before your changes start> -s recursive -X 我們

要将所有承诺分成一个,当您被要求编辑将合并的承诺时(在旗帜上),更新所有但第一个行动,从选择到分解,如其他答案中所建议。

在这里,我们使用合并策略(旗帜)回归和战略选项(X)我们的,以确保历史上后来的承诺赢得任何合并冲突。

注意:不要把这与我们做别的事情的 git rebase 混淆。

引用: git rebase recursive merge 策略

如果您正在使用 GitUp,选择您想要与其父母合并的承诺,并按下 S. 您必须为每个承诺做一次,但它比与正确的命令线引发更简单。

什么可能真的很方便: 找到你想在顶部滑动的承诺,说d43e15。

现在使用

git reset d43e15
git commit -am 'new commit name'
git rebase -i HEAD^^

在哪里 ^'s 的数量是 X

(此分類上一篇: 最後兩個命令)