我试过谷歌,没有帮助。Git - 需要关于rebase的一些解释
我得到了一个有效的OS项目,保持与好东西,我在它上面开发更新,
因此,可以说我得到了这个项目的git仓库(让我们称之为当前状态x)和目前的现状是:
OS项目
x
我的项目(加时有些变化)
x -> y
现在OS项目更新:
x -> z
,我wan't我的项目包含Z和看起来像
x -> z -> y
或
z -> y
有人能解释我如何使它发生?
我试过谷歌,没有帮助。Git - 需要关于rebase的一些解释
我得到了一个有效的OS项目,保持与好东西,我在它上面开发更新,
因此,可以说我得到了这个项目的git仓库(让我们称之为当前状态x)和目前的现状是:
OS项目
x
我的项目(加时有些变化)
x -> y
现在OS项目更新:
x -> z
,我wan't我的项目包含Z和看起来像
x -> z -> y
或
z -> y
有人能解释我如何使它发生?
简单的方法是使用下面的两个命令(你迭加或承诺更改后):
$ git fetch origin master
$ git rebase FETCH_HEAD
第一个获取从远程命名为“起源”原仓库的变化。第二个将您的更改移动到新的远程HEAD。
这里需要注意的重要一点是,您使用git fetch
而不是git pull
。后者是fetch
,后面是自动merge
。你不想那样。
如果您正在寻找替代方法,我总是在我的单独分支上工作。然后,我可以让主人等同于维护者的版本,并且我可以继续重新绑定我的并行分支。如果我的分支有其他用户,我会将主人合并到它中。
假设x,y和z是分支(X和Z轴实际上是同一个分支),你必须ÿ签出,你可以这样做:
git rebase z
这样做是什么重播所有你从y创建点开始的提交,在z之上,为你产生一个新的y。请注意,当你这样做时,你正在改变历史。也就是说,在rebase之前你提交的所有SHA都被改变了。如果你是唯一一个在y上工作的人,这不是问题。如果你在一个团队中工作,并且有多个人对y做出承诺,那么重新定义可能是一个糟糕的主意。在这种情况下,您可以从z合并到y。在不改变历史的情况下实现您的目标。
将M作为_main_分支并将D作为从M分支出来的分支,将D从M分出来是合理的,当你想将D合并到M中并保留一个“平坦”提交历史时。当没有合并冲突时,这是最干净的解决方案。相反,在将主分支合并到派生分支时,应避免重新分配。在[使用Git进行版本控制]中有一个很好的处理方法[http://www.amazon.co.uk/Version-Control-Git-collaborative-development/dp/0596520123/ref=sr_1_1?ie=UTF8&qid= 1316715248&SR = 8-1) –
我相信这相当于'git pull --rebase'。你也可以使用'git config branch.master.rebase true'设置一个分支来重新绑定。你也可以设置git来始终使用'git config branch.autosetuprebase always'使所有的远程分支在拉动下拉动。 –
@Bill所有优秀的替代品。我倾向于只学习基本操作,并将它们结合起来。感谢您的快捷键。 – vhallac