【问题标题】:Git merge develop into feature branch outputs "Already up-to-date" while it's notGit合并开发成功能分支输出“已经是最新的”,而它不是
【发布时间】:2016-01-25 08:27:09
【问题描述】:

我检查了一个名为 branch-x 的开发功能分支。过了一会儿,其他人将更改推送到开发分支。

我想将这些更改合并到我的branch-x。但是,如果我这样做了

git merge develop 

它说“已经是最新的”并且不允许我合并。

git diff develop表示branch-x和develop有区别。

如何将开发合并到branch-x

【问题讨论】:

  • 你的分支真的是最新的吗?拉有时会失败。试试git checkout developgit merge origin/develop
  • 是的,“git merge origin/develop”输出“已经是最新的”。

标签: git merge


【解决方案1】:

您应该首先pull develop 分支的更改,然后才将它们合并到您的分支:

git checkout develop 
git pull 
git checkout branch-x
git rebase develop

或者,当branch-x

git fetch && git rebase origin/develop

我有一个别名,可以为我节省很多时间。添加到您的~/.gitconfig

[alias]
    fr = "!f() { git fetch && git rebase origin/"$1"; }; f"

现在,你要做的就是:

git fr develop

【讨论】:

  • 很抱歉我没有在我的问题中描述它,但我已经将更改拉到我的本地机器上。所以这不会导致问题。
  • 盲目使用git rebase 是危险的。它可能很容易创建无法编译的无意义提交。
  • @cmaster-reinstatemonica 但是,如果您当前的分支已经有提交并且您想在合并后“压缩”一些提交,那么在这种情况下 rebase 会更好
  • 它也破坏了我的提交。
  • 到底是什么坏了?
【解决方案2】:

最初我的回购说“已经是最新的”。

MINGW64 (feature/Issue_123) 
$ git merge develop

输出:

Already up to date.

但代码不是最新的,并且在某些文件中显示了一些差异。

MINGW64 (feature/Issue_123)
$ git diff develop

输出:

diff --git 
a/src/main/database/sql/additional/pkg_etl.sql 
b/src/main/database/sql/additional/pkg_etl.sql
index ba2a257..1c219bb 100644
--- a/src/main/database/sql/additional/pkg_etl.sql
+++ b/src/main/database/sql/additional/pkg_etl.sql

但是,合并可以解决此问题。

MINGW64 (feature/Issue_123)
$ git merge origin/develop

输出:

Updating c7c0ac9..09959e3
Fast-forward
3 files changed, 157 insertions(+), 92 deletions(-)

我再次使用diff 命令确认了这一点。

MINGW64 (feature/Issue_123)
$ git diff develop

现在代码没有区别了!

【讨论】:

    【解决方案3】:
    git fetch && git merge origin/develop
    

    【讨论】:

    • 'git pull origin develop' 是等价的
    • 是的,这是最简单的方法。谢谢。
    【解决方案4】:
    git pull origin develop
    

    因为将一个分支拉到另一个分支直接合并在一起

    【讨论】:

      【解决方案5】:

      一步一步地自我解释使用来自“开发”分支的最新代码更新功能分支的命令:

      git checkout develop
      git pull -p
      git checkout feature_branch
      git merge develop
      git push origin feature_branch
      

      【讨论】:

      • -p 选项有什么作用?我在手册页中找不到它。
      • 只需提交您在 feature_branch 中的任何内容,然后尝试此答案。
      • git pull -p -p 和 --prune 一样,这个选项用来清理过时的分支。您可以定义自动修剪而不是使用参数:stackoverflow.com/questions/18308535/… 在上面的示例中,无法使用 -p 选项。
      猜你喜欢
      • 2020-09-08
      • 1970-01-01
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 2013-02-28
      • 2014-11-11
      • 1970-01-01
      相关资源
      最近更新 更多