【问题标题】:Do I need to checkout and pull a remote git branch before I merge it in?在合并之前,我是否需要签出并拉取远程 git 分支?
【发布时间】:2015-08-02 21:50:34
【问题描述】:

我将develop 合并到我的feature\my-feature 分支的正常流程是:

name@home ~/myRepo (feature/my-feature)
$ git checkout develop
$ git pull
$ git checkout feature/my-feature
$ git merge develop
$ git mergetool

这个可以换成:

name@home ~/myRepo (feature/my-feature)
$ git fetch
$ git merge origin/develop
$ git mergetool

fetch 是否从远程 origin/develop 检索到有关更改的足够信息,以允许我从 origin/develop 而不是 develop 合并?

feature/my-feature 放在develop 之前并从远程origin/develop 更改是不好的做法吗?

【问题讨论】:

  • 我可以把git pull develop 加入我的feature/my-feature

标签: git merge git-merge git-flow


【解决方案1】:

您可以直接pull您的远程分支develop,但您可能需要提及远程存储库(在您的情况下为origin):

git checkout feature
git pull origin develop

这将导致合并提交,其中消息提到origin/develop

不提远程仓库,恐怕pull 的合并部分会合并您的本地分支develop,而不是获取的分支。但是一定要试试!

【讨论】:

    【解决方案2】:

    this question 中所述,git pull 只是一个git fetch,后跟git merge

    这样的话我更容易思考。

    我个人更喜欢获取远程分支而不是拉取它们,因为并非总是需要由 git pull 强制进行的自动合并。

    以下是我的典型工作流程: 我总是从origin/develop 分支开始新功能

    git checkout develop
    git fetch origin
    git reset --hard origin/develop
    git checkout -b new_feature_branch
    

    这确保我在最新的起源开发分支上。

    为什么它比pull 更好?因为它可以防止在获取时合并并有助于保持干净的 git 历史记录。

    【讨论】:

    • 当您的更改被拉入远程develop 时,如何将最新的合并到您的功能分支以防止冲突?这似乎是更多的命令,而不是更少。
    • 我会在一分钟内将我的典型工作流程添加到我的答案中
    • 在您的典型工作流程中,如何确保new_feature_branchdevelop 在合并之前是最新的?您应该定期将develop 合并到new_feature_branch,这样您就可以很少而且经常合并。
    • 我通常只在拉取请求之前合并。为什么我很少和经常合并?
    • 这取决于团队规模、上游分支的流失/提交量、文件冲突。如果你有一个复杂的合并,合并越小,其他贡献者提交的时间越早,它就会越新鲜,合并就越容易。例如。在 9 天前工作的午餐时间品脱之后,在周五下午合并一些复杂的事情,而贡献者休年假本可以在前一周合并是次优的。
    猜你喜欢
    • 2015-04-24
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2011-12-18
    • 2011-08-15
    • 2011-05-02
    • 2015-09-03
    相关资源
    最近更新 更多