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