我有两个分支,电子邮件和分期。分期是最新的一个,我不再需要旧的更改在电子邮件分支,但我不想删除他们。
我只想将所有staging的内容转储到电子邮件中,以便它们都指向同一个提交。这可能吗?
我有两个分支,电子邮件和分期。分期是最新的一个,我不再需要旧的更改在电子邮件分支,但我不想删除他们。
我只想将所有staging的内容转储到电子邮件中,以便它们都指向同一个提交。这可能吗?
当前回答
我已经看到了几个答案,这是唯一的程序,让我解决没有任何冲突。
如果你想要在branch_old中对branch_new的所有更改,那么:
git checkout branch_new
git merge -s ours branch_old
git checkout branch_old
git merge branch_new
一旦应用了这四个命令,您就可以毫无问题地推送branch_old了
其他回答
这将合并新旧两个分支,并在每次合并冲突时选择新版本:
git checkout old
git merge new
git checkout --theirs .
git add .
git commit
我已经看到了几个答案,这是唯一的程序,让我解决没有任何冲突。
如果你想要在branch_old中对branch_new的所有更改,那么:
git checkout branch_new
git merge -s ours branch_old
git checkout branch_old
git merge branch_new
一旦应用了这四个命令,您就可以毫无问题地推送branch_old了
警告:这将删除电子邮件分支上的所有提交。这就像删除电子邮件分支,并在登台分支的头部重新创建它。
最简单的方法是:
//the branch you want to overwrite
git checkout email
//reset to the new branch
git reset --hard origin/staging
// push to remote
git push -f
现在电子邮件分支和分期是相同的。
如果你像我一样不想处理归并,你可以执行上面的步骤,除了使用强制而不是归并,因为它会创建一个分散注意力的日志记录:
git checkout email
git reset --hard staging
git push origin email --force
注意:除非你真的不想再在邮件里看到这些东西。
这个分支不会改变原来更新的分支,并让您有机会在最终提交之前进行进一步的修改。
git checkout new -b tmp
git merge -s ours old -m 'irrelevant'
git checkout old
git merge --squash tmp
git branch -D tmp
#do any other stuff you want
git add -A; git commit -m 'foo' #commit (or however you like)