我想在我的存储库中保留一个git repo作为子模块,让我们说git://somerepo
和
somerepo
存储库中的代码并与我的队友共享更改(而不是通过上游)此方案最方便的工作流程是什么(如果您共享执行命令的顺序,那将是理想的)?
somerepo
也与未与任何人共享的其他代码一起生存,因此它必须充当存储库中的单独存储库,其推送端指向我的服务器并且指向上游的拉端(如果这在可能的情况下)
答案 0 :(得分:3)
您可以使用triangular workflows。在为开源项目做贡献时,使用所谓的“三角形工作流程”是很常见的:
您从规范"上游"存储库,以使您的本地存储库保持最新。
如果您想与其他人分享您自己的修改,请将它们推送到您自己的分叉并打开拉取请求。
如果您的更改被接受,项目维护者会将它们合并到上游存储库中。
$ 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
遥控器。
$ git remote add upstream https://github.com/atom/atom
$ git fetch upstream
您只需按照上述步骤操作一次即可。从那时起,只要您想要处理新功能,就可以更轻松地与远程存储库进行交互:
确保您的本地存储库与上游存储库保持同步:
$ git fetch upstream
从上游主服务器创建一个分支whizbang
以处理新功能,并查看分支:
$ git checkout -b whizbang upstream/master
这会自动设置您的本地whizbang
分支以跟踪上游主分支。这意味着如果向master上游添加了更多提交,则可以通过键入
$ 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