git 意外同步了两个分支(现在具有相同的日志)

iezvtpos  于 2023-01-28  发布在  Git
关注(0)|答案(1)|浏览(217)

我已经设法使两个不相关的分支同步,这样两个分支的git log就几乎相同了。
1.我在一个分支机构工作。
1.已获取并 checkout releaseBranch,但忘记提交对dev所做的更改。
1.意识到我的错误并 checkout dev并提交我的更改。
1.已删除releaseBranch,并重新获取和检出另一个分支。
1.如下所示,git log现在显示了相同的not分支提交和两个HEAD
dev上的git log

commit f6824f8f7e85d27087d91f7b2ed18d6ac0bb3b2c (HEAD -> releaseBranch, dev)
Author: Me <me@example.com>
Date:   Mon Jan 23 12:13:17 2023 +0000

    Last commit to dev

release Branch上的git log

commit f6824f8f7e85d27087d91f7b2ed18d6ac0bb3b2c (HEAD -> dev, releaseBranch)
Author: Me <me@example.com>
Date:   Mon Jan 23 12:13:17 2023 +0000

    Last commit to dev

把自己从这一团乱麻中解脱出来的最好办法是什么?
git版本2.25.1

j91ykkif

j91ykkif1#

这种情况偶尔会发生在我们身上,现在最好的方法是创建两个新的本地分支,一个用于开发,一个用于发布,如果你还没有推送,你可以基于origin/releaseBranchorigin/dev
现在你需要弄清楚哪些提交属于哪个分支,我们在这方面帮不了你,但是你可以看看git reflog来了解哪些提交曾经被本地 checkout 。
最安全的方法是git cherrypick the-commit-sha-s65sd7s57s每个你还没有推送到正确分支的提交,从最旧到最新依次执行,一旦满意,删除混乱的分支,并选择性地重命名你所在的本地分支,然后将正确的提交推送到远程分支。
你也可以通过将每个分支重置为正确的最近一次提交来解决这个问题,方法是先 checkout 分支,然后再 checkout git reset --hard the-commit-sha-of-the-latest-correct-commit,你可能会再次在git loggit reflog中找到sha.如果你重置为一个会改变远程数据库历史记录的提交,那么你需要强制推送.
您也可以通过交互式重定基来修复此问题。

相关问题