繁体   English   中英

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

[英]Git submodule workflow pull from upstream but push to own repository

我想在我的存储库中保留某个 git repo 作为子模块,比如说git://somerepo

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

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

编辑

somerepo还与其他不与任何人共享的代码一起存在,因此它必须充当存储库中的单独存储库,推送端指向我的服务器,拉取端指向上游(如果可能的话)

您可以使用三角工作流程 在为开源项目做贡献时,通常使用所谓的“三角工作流程”:

  1. 您可以从规范的“上游”存储库中获取内容,以使本地存储库保持最新状态。

  2. 当您想与其他人共享自己的修改时,可以将其推入自己的分叉并打开拉取请求。

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

在此处输入图片说明

制备

1.在计算机上创建fork的本地克隆:
$ git remote add upstream https://github.com/atom/atom
$ git fetch upstream

在此步骤之后,称为origin的远程origin是指您的Atom分支。 它还将推送的默认远程设置为origin ,并将默认推送行为设置为current 这意味着如果您仅键入git push ,则当前分支将被推送到origin远程。

2.创建另一个称为上游的远程站点,该远程站点指向主原子存储库并从中获取:
$ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM