我有两个分支,电子邮件和分期。分期是最新的一个,我不再需要旧的更改在电子邮件分支,但我不想删除他们。
我只想将所有staging的内容转储到电子邮件中,以便它们都指向同一个提交。这可能吗?
我有两个分支,电子邮件和分期。分期是最新的一个,我不再需要旧的更改在电子邮件分支,但我不想删除他们。
我只想将所有staging的内容转储到电子邮件中,以便它们都指向同一个提交。这可能吗?
当前回答
你想要的是这个(实际上与目前接受的答案完全相反):
git checkout email
git merge --strategy-option=theirs staging
它的作用是:
电子邮件分支文件现在将完全相同的分期分支 电子邮件分支的历史将被保留 分期分支的历史将被添加到电子邮件历史
作为附加价值,如果您不想要所有登台分支的历史记录,您可以使用squash将其总结为一条提交消息。
git checkout email
git merge --squash --strategy-option=theirs staging
git commit -m "Single commit message for squash branch's history here'
总之,第二个版本所做的是:
电子邮件分支文件现在将完全相同的分期分支 电子邮件分支的历史将被保留 单个提交将被添加到电子邮件分支的历史记录之上。这个提交将表示在暂存分支中发生的所有更改
其他回答
如果你像我一样不想处理归并,你可以执行上面的步骤,除了使用强制而不是归并,因为它会创建一个分散注意力的日志记录:
git checkout email
git reset --hard staging
git push origin email --force
注意:除非你真的不想再在邮件里看到这些东西。
git checkout email
git merge -m "Making email same as staging disregarding any conflicts from email in the process" -s recursive -X theirs staging
如何:
git branch -D email
git checkout staging
git checkout -b email
git push origin email --force-with-lease
我想合并两个分支,以便old_branch中的所有内容都与new_branch中的内容更新
对我来说,这就像一个魔法:
$ git checkout new_branch
$ git merge -m 'merge message' -s ours origin/old_branch
$ git checkout old_branch
$ git merge new_branch
$ git push origin old_branch
你想要的是这个(实际上与目前接受的答案完全相反):
git checkout email
git merge --strategy-option=theirs staging
它的作用是:
电子邮件分支文件现在将完全相同的分期分支 电子邮件分支的历史将被保留 分期分支的历史将被添加到电子邮件历史
作为附加价值,如果您不想要所有登台分支的历史记录,您可以使用squash将其总结为一条提交消息。
git checkout email
git merge --squash --strategy-option=theirs staging
git commit -m "Single commit message for squash branch's history here'
总之,第二个版本所做的是:
电子邮件分支文件现在将完全相同的分期分支 电子邮件分支的历史将被保留 单个提交将被添加到电子邮件分支的历史记录之上。这个提交将表示在暂存分支中发生的所有更改