我有Git master和dev分支。在尝试将我的dev分支合并到我的主分支的过程中,我无意中做了一些错误,现在看来master已经搞砸了。我知道我的开发分支是好的,我不想发生任何事情,所以我试图用我的开发分支替换我的主分支。如果我能保留我的主提交日志条目会很好,但只要我能保留dev中的所有内容,我就可以丢失它们。我尝试实施此Stackoverflow question中描述的解决方案,但他们无法正常工作。这就是我的所作所为:
$ 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)
如果我那么做" git pull",主分支不再包含开发人员的更改,Git告诉我我的分支是最新的' origin / master&# 39 ;.现在我该怎么做?如何用dev覆盖这个大师?师父并没有包含开发者的变化。如果我现在做" 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)
正如您所看到的,当我尝试实施第一个解决方案时,这会让我回到原来的位置。我完全糊涂了。如何用我的dev分支覆盖我的主分支?
答案 0 :(得分:0)
如果我可以保留我的主提交日志条目
那就太好了
我会在您当前的主人处创建一个新分支,以跟踪所有历史记录。
git checkout master
git branch old-master
我正在尝试用我的dev分支替换我的主分支
要做到这一点,我只需将您的主分支重置为您的开发分支。
git checkout master
git reset --hard dev
这实际上只是将master
分支的头部移动到dev
分支的头部。
这会将您的旧master
历史记录保留在old-master
,而不会弄乱任何内容。这也不会触及您的dev
分支。