维护与上游同步的分支

时间:2016-09-14 05:27:44

标签: git

我打算在github上添加一些基于项目的代码,例如:添加一些适合我项目的自定义选项。

一个想法是分叉并创建一个分支以包含我的所有更改。每当上游有新的变化时,我都会将它们取出并重新绑定到我的分支。

假设这些是我的遥控器:

$ git remote -v
my   git@github.com:khing/myproject.git (fetch)
my   git@github.com:khing/pyproject.git (push)
up   https://github.com/upstream/project.git (fetch)
up   https://github.com/upstream/project.git (push)

上游有三个提交:A,B,C和我有两个额外的提交:M,N

所以我猜当前的分支就像:

up: A--B--C
my: A--B--C--M--N

假设上游有两个新的提交D和E,我应该获取和rebase(是的,我可能必须修复合并冲突),所以我猜它会是:

up: A--B--C--D--E
my: A--B--C--D--E--M--N

这是保持我自己的分支同时与上游分支保持同步的好方法吗?

1 个答案:

答案 0 :(得分:3)

是。这就是我在“Pull new updates from original GitHub repository into forked GitHub repository”中描述的内容。

从答案(2010)开始,您可以:

  • 配置为始终从原始上游仓库拉出

    git remote set-url origin https://github.com/upstream/project.git
    git remote set-url --push origin git@github.com:khing/myproject.git 
    
  • 确保您始终在提取内容的基础上重新定位本地提交:
    (需要Git 2.9 +,2016年6月,请参阅“Can “git pull” automatically stash and pop pending changes?”)

    git config pull.rebase true
    git config rebase.autoStash true
    

然后一个简单的git pull就足够了。