我有Git master和dev分支。在尝试将我的开发分支合并到我的主分支的过程中,我无意中做了一些错误,现在看起来主控已经搞乱了。我知道我的开发分支是好的,我不希望发生任何事情,所以我试图用我的开发分支替换我的主分支。如果我可以保留我的主提交日志条目,但是我可以丢失它们,只要我可以保留dev中的所有内容即可。我试图实施这个Stackoverflow question中描述的解决方案,但他们不工作。下面是我所做的:无法用dev分支覆盖Git master分支
$ git checkout dev
$ git branch -f master dev
$ git checkout master
Switched to branch 'master'
Your branch is behind 'origin/master' by 4 commits and can be fast-forward.
(use "git pull" to update your local branch)
如果我那么做“混帐拉”,主分支不再包含Dev的变化和Git告诉我,我的分支上最新与“产地/主”。现在我该怎么做?这是如何覆盖主开发? Master不包含开发变更。如果我现在做“git merge --no-ff dev”,Git说“已经是最新的”。
我也试图这样做,以实现第二个答案如下:
$ git checkout dev
$ git merge -s ours --no-commit master
Already up-to-date.
% git commit
On branch dev
Your branch is up-to-date with 'origin/dev'.
nothing to commit, working tree clean
$ git checkout master
Your branch is behind 'origin/master' by 4 commits and can be fast-forward.
(use "git pull" to update your local branch)
正如你所看到的,这需要我马上回我在那里当我试图实施第一个解决方案。我完全困惑。我如何用我的开发分支覆盖我的主分支?
阅读关于git reflog。 Git在如何恢复到不同的“动作”方面非常灵活。 –
您可以使用像gitk这样的图形存储库浏览器来了解情况。 'gitk'还允许您通过首先检出该分支,然后右键单击所需的提交并选择'Reset to here',将分支指针移动到您喜欢的任何提交。 –
mkrieger1
从“狗狗”获取帮助:'git log --all --decorate --oneline --graph'(** a ** ll ** d ** ecorate ** o ** neline ** g ** raph = adog)。或者,使用图形浏览器,如@ mkrieger1建议的那样。很显然,问题的部分原因是您的上游存储库('origin/*')提供了您试图从历史记录中“编辑”的提交内容,但尚不清楚您的其他情况。 – torek