如果主人提前8并且落后16人(前方8人无用),我如何合并我的dev分支?

时间:2015-06-11 07:29:07

标签: git

正如主题所述,我有一个dev git分支,它提前16次提交,8次跟在master之后。主人提前8,但提交没用,源代码有缺陷。我需要删除它们。

我试图让我的dev分支成为新的主人,只需切换。

git branch -m master old_master
git branch -m develop master
git push --set-upstream origin master

但是我收到了一条错误消息:

To git@XYZ.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@XYZ.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

那我现在该怎么办?我的目标基本上是让dev成为新的主人,或者回到主人和dev那里“等于”然后进行合并。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

注意:无论你尝试什么方法,都要确保" unrename"首先是您的本地分支,即本地计算机上的原始 masterdev确实命名为" master"和" dev,"分别

如果你没有推动你想要的提交,那么做一个简单的硬重置的建议是一个很好的建议"撤消"对于服务器,在这种情况下,似乎你已经推送它们(如果不是这样的话,你可以忽略这个答案,并使用ckruczek的答案,这将导致更清洁历史)。一旦提交被推送到服务器,它们实际上无法撤消,除非你a)强制推动 b)让你的团队的每个成员也在他们的结束时进行硬重置。

如果您只想让master反映dev中的内容,则以下步骤即可完成,而不会尝试重写历史记录。首先,确保您拥有服务器的最新信息:

git checkout master
git pull
git checkout dev
git pull

然后,进行合并:

git merge master -s ours
git checkout master
git merge dev

完成这些步骤后,masterdev都会指向相同的提交,其内容与dev之前的内容相同。当然,您需要在执行这些步骤后将devmaster推送到origin

答案 1 :(得分:2)

想象一下下面的图: graph

你现在的意思是,不需要在蓝色分支之后的提交。所以你做了一个

$ git reset --hard 2

现在你可以用简单的快进合并你的蓝色分支

git checkout master
git merge dev
git push origin master