[英]Git submodule workflow pull from upstream but push to own repository
我想在我的存储库中保留某个 git repo 作为子模块,比如说git://somerepo
和
somerepo
存储库中的代码并与我的队友共享更改(而不是通过上游)这种情况下最方便的工作流程是什么(如果您共享您执行的命令的顺序,那将是理想的)?
somerepo
还与其他不与任何人共享的代码一起存在,因此它必须充当存储库中的单独存储库,推送端指向我的服务器,拉取端指向上游(如果可能的话)
您可以使用三角工作流程 。 在为开源项目做贡献时,通常使用所谓的“三角工作流程”:
您可以从规范的“上游”存储库中获取内容,以使本地存储库保持最新状态。
当您想与其他人共享自己的修改时,可以将其推入自己的分叉并打开拉取请求。
如果您的更改被接受,则项目维护者会将其合并到上游存储库中。
$ git remote add upstream https://github.com/atom/atom
$ git fetch upstream
在此步骤之后,称为origin
的远程origin
是指您的Atom分支。 它还将推送的默认远程设置为origin
,并将默认推送行为设置为current
。 这意味着如果您仅键入git push
,则当前分支将被推送到origin
远程。
$ git fetch upstream
您只需执行上述步骤一次。 从那时起,只要您想使用新功能,就可以更轻松地与远程存储库进行交互:
确保您的本地存储库与上游存储库是最新的:
$ git pull
创建一个分支whizbang
关闭上游主对新功能的工作,并检查了分支:
$ git push
这将自动设置您的本地whizbang
分支以跟踪上游master分支。 这意味着,如果将更多提交添加到上游上游,则可以通过键入以下内容将这些提交合并到您的whizbang分支中
$ git pull
将您的whizbang
分支推到叉子:
$ git log @{push}..
由于上述配置,并且由于whizbang
是当前分支,因此上述命令不需要任何参数。
继续修改,提交,修改,提交。
查看自上次推送以来已添加到当前分支中的提交:
$ git log @{push}..
这使用新的@ {push}表示法,它表示远程分支的当前值,即git push将当前分支推入的分支,即origin / whizbang。 您还可以使用符号whizbang @ {push}引用任意分支的推送目标。
将新提交推送到GitHub分支上的whizbang
分支:
$ git push
我最终没有使用子模块,而是使用了单独的仓库:
git remote set-url --push origin git://repourl
因此,推送端是我的服务器,而提取端是上游。
您可以使用以下命令检查当前的推送/获取配置
git remote -v
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.