Git子模块工作流从上游拉出,但推送到自己的存储库

时间:2015-10-05 19:07:46

标签: git git-submodules

我想在我的存储库中保留一个git repo作为子模块,让我们说git://somerepo

  • 从上游采取变更
  • 但没有合并这些更改(因为我没有权限)
  • 更改somerepo存储库中的代码并与我的队友共享更改(而不是通过上游)

此方案最方便的工作流程是什么(如果您共享执行命令的顺序,那将是理想的)?

修改

somerepo也与未与任何人共享的其他代码一起生存,因此它必须充当存储库中的单独存储库,其推送端指向我的服务器并且指向上游的拉端(如果这在可能的情况下)

2 个答案:

答案 0 :(得分:3)

您可以使用triangular workflows。在为开源项目做贡献时,使用所谓的“三角形工作流程”是很常见的:

  1. 您从规范"上游"存储库,以使您的本地存储库保持最新。

  2. 如果您想与其他人分享您自己的修改,请将它们推送到您自己的分叉并打开拉取请求。

  3. 如果您的更改被接受,项目维护者会将它们合并到上游存储库中。

  4. enter image description here

    制备

    1.在计算机上创建fork的本地克隆:
    $ git clone https://github.com/YOUR-USERNAME/atom
    $ cd atom
    $ git config remote.pushdefault origin
    $ git config push.default current
    

    在此步骤之后,名为origin的远程控制器将引用您的Atom分支。它还将推送的默认远程设置为origin,将默认推送行为设置为current。这意味着如果您只键入git push,则会将当前分支推送到origin遥控器。

    2.创建第二个名为upstream的远程,指向主要原子存储库并从中获取:
    $ git remote add upstream https://github.com/atom/atom
    $ git fetch upstream
    

    黑客

    您只需按照上述步骤操作一次即可。从那时起,只要您想要处理新功能,就可以更轻松地与远程存储库进行交互:

    确保您的本地存储库与上游存储库保持同步:

    $ git fetch upstream
    

    从上游主服务器创建一个分支whizbang以处理新功能,并查看分支:

    $ git checkout -b whizbang upstream/master
    

    这会自动设置您的本地whizbang分支以跟踪上游主分支。这意味着如果向master上游添加了更多提交,则可以通过键入

    将这些提交合并到whizbang分支中。
    $ git pull
    

    将您的whizbang分支推送到您的分支:

    $ git push
    

    由于上述配置,并且whizbang是当前分支,因此上述命令不需要任何参数。

    继续破解,提交,破解,提交。

    查看自上次推送以来您已添加到当前分支的提交内容:

    $ git log @{push}..
    

    这使用新的@ {push}表示法,它表示当前分支将被git push推送到远程跟踪分支的当前值,即origin / whizbang。您还可以使用符号whizbang @ {push}。

    来引用任意分支的推送目标

    将新提交推送到GitHub fork上的whizbang分支:

    $ git push
    

答案 1 :(得分:0)

我最终没有使用子模块,而是使用单独的repo:

git remote set-url --push origin git://repourl

所以推送端是我的服务器,但是获取端是上游。

您可以使用

检查当前的推送/获取配置

git remote -v