【问题标题】:Updating multiple branches of a forked repository on Github在 Github 上更新分叉存储库的多个分支
【发布时间】:2011-05-19 00:38:48
【问题描述】:

我有一个分叉的 github 存储库(称为 repo-O 并称为我的 fork repo-F),其中包含大约 8 个分支。已经从其他贡献者和 repo-O 的多个分支上对 repo-O 进行了几次(100 次)提交。我现在想将这些更改提取到我的分叉存储库 (repo-F) 中。我不能使用 fork 队列,因为大约有 3000 个提交需要通过,我更愿意从命令行执行此操作。

所以.. 我已经克隆了我的 repo,将 repo-O 添加为远程(上游)并获取更改,然后合并源/上游...然后推送回 repo-F。

这似乎已将更改应用到主分支,但没有应用到任何其他分支......

如何重复上述过程以更新“所有”分支?

谢谢

【问题讨论】:

    标签: git github fork


    【解决方案1】:

    awk 版本与一些合并之旅

    sync_all_branch () {
      git fetch upstream
      for upstream_branch in   $( git branch -a |awk 'BEGIN {FS="/"} $2=="upstream" {print $3}' ) ;
      do
          if git checkout $upstream_branch
          then
              echo merge $upstream_branch
              git merge -s recursive -Xours upstream/$upstream_branch 
          else
              echo create $upstream_branch
              git checkout -b $upstream_branch upstream/$upstream_branch
          fi
      done
      git checkout master
      git push --all
    }
    

    【讨论】:

      【解决方案2】:

      您想要完成的是“对于 repo-o 上的每个远程分支,如果我没有它,则创建指向 repo-o 分支的相同分支,或者从同一分支上的任何内容提取本地分支上的信息在 repo-o 上,最后将所有这些分支推送到我的 repo-f"。

      假设你的遥控器真的被命名为 repo-o 和 repo-f,我会在 bash 中使用类似的东西:

      for repo_o_branch in \
          $(git branch -a|grep repo-o|perl -nle's,^\s*repo\-o/,,;print $_';
      do
          (                                                              \
             ( git checkout $repo_o_branch                               \
               && git pull --rebase repo-o $repo_o_branch)               \
             || ( git checkout -b $repo_o_branch repo-o/$repo_o_branch ) \
          ) && git push repo-f $repo_o_branch;
      done
      

      对于所有“repo o 分支”(由git branch -a 显示为“repo-o/branchname”,其中没有“空格和'repo-o/'”部分),

      • 尝试检查分支并在其中执行git pull --rebase repo-o branchname,
      • 或者,如果git checkout 失败(因为您没有该分支):签出一个以 repo-o 的分支名称命名的新分支并将其指向 repo-o 的分支名称。
      • 如果以上两项中的任何一项成功,请将新创建或更新的分支名称推送到您的 repo-f。

      调味;最好在新创建的repo-f git 克隆上尝试添加远程repo-o,以防万一出现问题;)

      【讨论】:

      • 非常感谢,这很有道理...我希望有一种方法可以让 git 自动合并所有分支,但是这个脚本看起来可以解决问题。谢谢
      猜你喜欢
      • 2013-04-18
      • 2013-03-16
      • 2011-04-23
      • 2012-10-05
      • 2020-12-30
      • 1970-01-01
      • 2015-04-16
      • 2011-01-02
      相关资源
      最近更新 更多