在使用git和bitbucket.com处理项目时,有以下分支:
master
development
uat
production
当我开始项目工作时,我采用了一个开发的git克隆(自然地认为它包含了最先进的代码)。几个月后的工作,现在结果是生产分支中的代码(当前正在生产中运行)的版本比我在开发分支中开始的代码更新。
当我试图:
git checkout development
git merge production
它说“已经是最新的”。我去的时候:
git diff production..development
它吐出了很多变化,说生产分支的代码不在开发分支中。如何在不擦除我几个月工作的情况下使生产代码与开发代码合并?
你可能不想 merge
,而是 rebase
。也就是说,接受你提交的提交,即提交 您 添加到分支机构 development
- 当你第一次做你的时候不存在的那些 clone
,但现在有 - 并看看每个人按顺序做出了哪些改变;并再次按顺序将这些更改应用于分支的顶部 production
。
(其中一些可能不会干净利落:改变 production
不存在的 development
意味着你所做的一些或许多修改需要修改以适应。更糟糕的是,改变你的一个改变几乎肯定会影响你的更改,所以这个改变可能很困难。)
那说......“最新”并不意味着代码是相同的,无论如何。它只是意味着 提交图 表明没有什么新内容可以引入。反过来,这意味着你(或其他人)已经完成了合并。该 树 附加到最终合并(合并的结果)不是你想要的,但git唯一可以看到的是合并完成。看到 为什么合并之后GIT会说“已经是最新的”,但分支之间的差异仍然存在? 举个例子 git revert
, 例如。