有没有像git reset之类的东西,除了使用git merge或其他没有rebase的东西?

时间:2017-03-16 21:01:44

标签: git

我将一大堆东西推到stage分支。

现在我想让它与master分支完全一样,但我无法改变/强制推送。

我知道有git merge -X theirs branch,但我完全想放弃stage分支中的任何更改,使其看起来与master分支完全相同。

使用git有一种简单的方法吗?

图:

 common
ancestor---stuff i don't care about---stage (A)
       \
        \________master (B)

1 个答案:

答案 0 :(得分:3)

是的,有:git reset

git checkout B~0
git reset --soft A
git commit
git checkout -B A

第一个命令设置您的工作树和索引以匹配B,而不会让您进入任何分支(“分离的HEAD”)。关键是下一个命令不会弄乱你的分支。

第二个命令将A的提交设置为“当前”提交,将其用作git commit的父级,同时保持工作树和索引不被修改。

第三个命令创建一个提交。它的父级将是A的最后一次提交,其效果是将树设置为与B完全相同。

第四个命令会让你回到分支上。它将A分支更新为新创建的提交。