使用来自branch2的master更改来重新绑定branch1

时间:2016-09-23 13:33:50

标签: git

我有两个分支json.loads(my_data.content) ; masterbranch1。我对branch2进行了一些更改,并为此启用了有效的PR。我也对branch1进行了更改,这些更改已经过审核并合并到branch2中,随后该分支也被删除了。

我通过执行mastermaster更新了我的本地git fetch -ap,从而降低了git pull中所做的更改。我现在想要更新branch2这些更改,以便唯一的区别是我在该分支上所做的。我尝试branch1后跟git checkout branch1

但是,当我在git rebase mastergit status时,它会说:

branch1

在此处执行On branch branch1 Your branch and 'origin/branch1' have diverged, and have 3 and 1 different commits each, respectively. (use "git pull" to merge the remote branch into yours) 会打开合并评论对话框。但现在,当我在git pull查看我的公关时,它现在包含branch1的更改作为新的更改。这里发生了什么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

(对于这个答案,我假设你已经签出Option Explicit Sub main() Dim arr1 As Variant, elem As Variant arr1 = Application.Transpose(ActiveSheet.Range("A1:A4").value) For Each elem In arr1 MsgBox elem Next elem End Sub 。如果没有,请branch1。)

执行git checkout branch1时,您正在重写git rebase master中的提交,因为它们现在有了新的父级。这就是您的历史记录:

branch1

例如X--*--Y [master] \ \ \ A'--B'--C' [branch1] <-- \ | (git rebase master) A--B--C [origin/branch1] ---- A'的内容相同,但提交哈希值不同,因为其父级为A而不是Y

由于提交已更改,您必须强制更新X。完成rebase后,你应该这样做:

origin

但是,由于您已经进行了git push --force-with-lease post-rebase,因此您需要先修复它。例如:

git pull

或者:

git reset --hard C'

这将从git reset --hard HEAD^ 中删除合并提交,您可以按上述方法强制推送。首先,为了确保您的分支正确重置,请执行以下操作:

branch1

该命令的输出应该显示git log --oneline --decorate master..HEAD 中应该包含的所有提交,并且只显示那些提交。

(旁白:如果此时你做branch1,你可能会看到这样的输出:

git status

您可以安全地忽略此警告,因为其中一个提交是合并提交,另一个是原始错误消息中的On branch branch1 Your branch is behind 'origin/branch1' by 2 commits, and can be fast-forwarded. (use "git pull" to update your local branch) 。)

如上所述,此时你应该这样做:

1 different commit

现在,远程git push --force-with-lease 将与您的本地branch1具有相同的提交。

强制性警告:由于rebase会重写历史记录,因此对于在此分支上工作的其他人来说,这可能会造成危险/破坏。请务必清楚地告知您与正在合作的任何人所做的事情。