我试过谷歌,没有帮助。
我有一个活跃的os项目,不断更新好的东西,我正在开发它,
所以我想说我得到了项目的git存储库(让我们调用当前状态x),当前状态是:
OS项目
x
我的项目(添加了一些y更改)
x -> y
现在OS项目已更新:
x -> z
我不想让我的项目包含z并且看起来像
x -> z -> y
或
z -> y
有人可以解释我该如何实现它?
答案 0 :(得分:2)
简单的方法是使用以下两个命令(在您进行了更改或提交更改之后):
$ git fetch origin master
$ git rebase FETCH_HEAD
第一个从名为“origin”的远程获取原始存储库中的更改。第二个将您的更改移动到新的远程HEAD。
这里需要注意的重要一点是,您使用的是git fetch
,而不是git pull
。后者是fetch
,后跟自动merge
。你不希望这样。
如果您正在寻找替代方法,我总是在我的单独分支上工作。然后我可以保持大师等于维护者的版本,我可以继续改变我的并行分支。如果我的分支中有其他用户,我将主服务器合并到其中。
答案 1 :(得分:1)
假设x,y和z是分支(并且x和z实际上是相同的分支),并且您已经签出,那么您将执行此操作:
git rebase z
这样做是重播所有提交的,从创建y的位置开始,在z之上,为您生成一个新的y。请注意,执行此操作时您将更改历史记录。也就是说,在rebase之前你所提交的所有SHA都被改变了。如果你是唯一一个在y上工作的人,这不是问题。如果你在一个团队中工作,并且有多个人已经承诺y,那么变基可能是一个坏主意。在这种情况下,您可以从z合并到y。这可以在不改变历史的情况下实现您的目标。