【问题标题】:GitHub working on separate branches but same class. How would we merge this?GitHub 在不同的分支上工作,但在同一个类上。我们将如何合并它?
【发布时间】:2013-02-12 16:39:28
【问题描述】:

我们目前有 2 个人在做一个项目。我们使用 github,我们有一个 master 分支。每个开发人员有 2 个子分支。所以我们总共有 3 个带有 master 的分支。

假设我们有一个文件 hello.class。两位开发人员都在各自的分支中对文件进行了更改。如果我现在将我的子分支与主分支合并。另一个子分支落后了,需要拉master,然后用他的子分支rebase。

现在问题出现了,因为如果他 rebase 的 master 发生变化,他会覆盖他在 hello.class 中的工作。我们将如何解决这个问题?有没有办法拉master,然后自动合并更改到子分支而不覆盖文件中完成的工作?

【问题讨论】:

    标签: java git github merge branch


    【解决方案1】:

    合并是 git for 的一半。如果更改发生冲突,git 将中止合并/变基并要求您在继续之前修复它们;如果更改位于文件的不同部分,git 将自己进行合并。你必须竭尽全力才能失去工作。

    【讨论】:

    • 我现在更改了一个变量,合并到 master 并推送它。另一部分拉出master,并入他的子分支。合并没有错误。为什么不?他的变量刚刚更改为我输入的内容。我相信它不应该?因为它应该报告合并冲突,因为他的变量已更改?如果他不想改变那个变量怎么办?
    • 那他不应该合并?合并的重点是为了获得新的代码更改;为什么git每次看到一个错误都会抛出一个错误?如果他没有改变你所做的相同的行,就不会有冲突,因为 git 可以自动组合更改。
    • 啊哈,所以如果我换了一行,他也换了同一行。会有错误。但是如果我换了一条线,他的线就和老师傅的线一样。会自动合并吗?好的!假设我们遇到了一个错误,我会打开什么来解决它?
    • 您只需编辑文件,git 就会在冲突区域周围添加 <<<<<<< 之类的标记。如果您已经熟悉合并实用程序,也可以使用git mergetool,git 会依次为您打开每个冲突文件。
    【解决方案2】:

    Git 不会覆盖更改。当你做一个变基时它会合并它们(你也可以做一个合并,即git merge master)。如果你们都更改了同一行代码,那么 git 会感到困惑并要求您修复合并冲突。但如果你没有更改完全相同的行,git 足够聪明地合并更改。

    我假设您正在提交 .java 文件,因为您不应该提交 .class 文件。

    【讨论】:

    • 这种方法对 2 个支行是否正确?创建分支测试。更改一些代码行。提交更改。 push changes git merge test 然后另一部分在分支 test2 上工作。 git checkout master git git pull git checkout test2 git rebase master 现在 test1 改变的文件在 test2 上也改变了吗?为什么,我们做错了什么?如果假设我们想要合并而不是覆盖?
    猜你喜欢
    • 2017-03-21
    • 2020-11-07
    • 2016-11-03
    • 2015-06-26
    • 2014-11-19
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多