【问题标题】:git merge Already up to date when it is notgit merge 不是时已经是最新的了
【发布时间】:2014-04-14 12:00:49
【问题描述】:

在使用 git 和 bitbucket.com 进行项目时,有以下分支:

master
development
uat
production

当我开始项目工作时,我采用了 git clone 的开发(自然地认为它包含最先进的代码)。几个月后的工作,现在发现生产分支中的代码(当前正在生产中运行)的版本比我在开发分支中开始的代码版本更新。

当我尝试:

git checkout development
git merge production

它说“已经是最新的”。我去的时候:

git diff production..development

它吐出很多变化,说生产分支的代码不在开发分支中。如何让生产代码与开发代码合并,而不用抹去我几个月的工作成果?

【问题讨论】:

标签: git merge git-merge


【解决方案1】:

您可能不想merge,而是想rebase。也就是说,获取您所做的提交, 添加到分支 development 的提交——那些在你第一次执行 clone 时不存在但现在存在的提交——然后看看每个人按顺序做了什么改变;并将这些更改再次按顺序应用到分支 production 的顶部。

(其中一些可能不会干净利落:对production 的更改在development 中不存在将意味着您所做的一些更改可能需要修改以适应。更糟糕的是,更改您的一项更改几乎肯定会影响您的更多更改,因此此 rebase 可能很困难。)

也就是说...“最新”并不意味着代码是相同的,无论如何。这只是意味着 提交图 表明没有什么新东西可以引入。这反过来意味着您(或其他人)已经进行了合并。附加到最终合并(合并的结果)的 tree 不是你想要的,但 git 唯一能看到的就是合并完成了。例如,有关 git revert 的示例,请参见 Why after merge does GIT say “Already upto date”, but differences between branches still exist?

【讨论】:

  • rebase 说同样的话.. 面对桌面
猜你喜欢
  • 2014-11-11
  • 2012-04-25
  • 2013-11-20
  • 2021-12-01
  • 2020-10-30
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
相关资源
最近更新 更多