无法用dev分支覆盖Git master分支

时间:2017-03-06 18:04:01

标签: git

我有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分支覆盖我的主分支?

1 个答案:

答案 0 :(得分:0)

  

如果我可以保留我的主提交日志条目

那就太好了

我会在您当前的主人处创建一个新分支,以跟踪所有历史记录。

  1. git checkout master
  2. git branch old-master
  3.   

    我正在尝试用我的dev分支替换我的主分支

    要做到这一点,我只需将您的主分支重置为您的开发分支。

    1. git checkout master
    2. git reset --hard dev
    3. 这实际上只是将master分支的头部移动到dev分支的头部。

      这会将您的旧master历史记录保留在old-master,而不会弄乱任何内容。这也不会触及您的dev分支。