我有两个分支,电子邮件和分期。分期是最新的一个,我不再需要旧的更改在电子邮件分支,但我不想删除他们。

我只想将所有staging的内容转储到电子邮件中,以便它们都指向同一个提交。这可能吗?


当前回答

我想合并两个分支,以便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 old
git merge new
git checkout --theirs .
git add .
git commit

我想合并两个分支,以便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 branch -D email
git checkout staging
git checkout -b email
git push origin email --force-with-lease

我尝试了@knittl的写树/提交树方法。

分支-a:保留分支

分支-b:废弃分支

// goto branch-a branch
$ git checkout branch-a

$ git write-tree
6fa6989240d2fc6490f8215682a20c63dac5560a // echo tree id? I guess

$ git commit-tree  -p branch-a -p branch-b 6fa6989240d2fc6490f8215682a20c63dac5560a
<type some commit message end with Ctrl-d>
20bc36a2b0f2537ed11328d1aedd9c3cff2e87e9 // echo new commit id

$ git reset --hard 20bc36a2b0f2537ed11328d1aedd9c3cff2e87e9

如果你像我一样不想处理归并,你可以执行上面的步骤,除了使用强制而不是归并,因为它会创建一个分散注意力的日志记录:

git checkout email
git reset --hard staging
git push origin email --force

注意:除非你真的不想再在邮件里看到这些东西。