我将一大堆东西推到stage
分支。
现在我想让它与master
分支完全一样,但我无法改变/强制推送。
我知道有git merge -X theirs branch
,但我完全想放弃stage
分支中的任何更改,使其看起来与master
分支完全相同。
使用git有一种简单的方法吗?
图:
common
ancestor---stuff i don't care about---stage (A)
\
\________master (B)
答案 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
分支更新为新创建的提交。