这件事发生在你身上吗?
我们的开发团队最近调动了我们的代码库和工作实践到GitHub而不是使用GitLab。我们的分支机构如下:
我们遇到过这样的情况:分支1完成了他们必须完成的工作,但是在合并回Development之前,他们从Development分支到branch1进行了合并。他发现存在合并冲突,因此我使用了GitHub的Resolve Conflicts按钮(它将我发送给他们方便的网络工具以解决冲突...请参阅此处https://help.github.com/articles/resolving-a-merge-conflict-on-github/)。一旦发生冲突,他就会从branch1向Development打开一个pull请求,以便在合并之前进行审核。我们注意到,他在手动合并冲突之前的所有提交历史和代码更改都已消失,并且无法查看其更改。更奇怪的是,他的代码似乎已经合并到了开发中,但是没有发生这种情况的历史,所以我们不知道它是如何发生的。
我们遇到与branch2类似的情况。从Development到branch2合并时存在冲突,使用GitHub上的合并工具,所有提交和代码更改的历史记录都消失了。但是,没有任何代码意外地合并到Development。
branch3也有合并冲突,但是使用命令行(GitBash)来解决这些冲突,当他准备好合并到Development时,提交历史仍然存在。
我们对branch1和branch2的问题可能与通过GitHub的合并工具有关吗?谷歌没有太大的帮助..
谢谢:)
答案 0 :(得分:1)
这是由合并和拉取请求时的步骤引起的。 拉出请求(PR)需要提前合并。 PR的目的是让其他人在真正执行之前审查合并。如果要将branch1合并到Development分支中,可以基于Development分支创建pull请求并比较branch1。 PR批准后,branch1可以合并到Development分支中。
从开发到branch1的步骤合并是不必要的或有害的,如果您合并它将branch1合并到Development。我们可以通过下图来说明:
A---B---C branch1
\
D---E Development
将开发合并到branch1后
A---B---C---F branch1
\ /
D---E Development
将分支1合并到开发分支后,它只导致分支1和开发点提交。这是一次快速合并。
A---B---C---F branch1, Development
\ /
D---E
所以你只需要将branch1合并到Development分支,图形应该是
A---B---D---E--- F’ branch1
\ /
----C---- Development
要将branch1和Development恢复到worongly merge之前的状态(commitC和E分别),您需要以下命令:
git checkout branch1
git reset --hard <commit id for C>
git checkout Development
git reset --hard <commit id for E>