如果我理解分叉,它在概念上涉及以下步骤:
- 将源存储库镜像克隆到目标存储库
- 在目标存储库上设置“上游”远程,指向源存储库
- 其他一些东西,例如电子邮件订阅等(对于这个问题并不重要)
它是这样的:
Original <──upstream─── Forked
(server) (server)
↑
│origin
│
(local)
与克隆的主要区别在于这些步骤是服务器端,不是本地的。如何在 git 命令行上手动复制它?
这是我到目前为止所做的:
- 将源存储库克隆到本地存储库
- 更改“origin”远程以指向预期的目标存储库
- 添加指向源存储库的“上游”远程
在这个阶段,我已经在本地存储库上设置了所有内容。我可以使用中间本地克隆来同步原始存储库和分叉存储库之间的更改。这就是我所拥有的:
Original Forked
(server) (server)
↑ ↑
│ │origin
│ │
└───────upstream─── (local)
现在我如何将此链接推送到服务器,即使原始存储库成为服务器端分叉回购,以匹配第一个图表?
请注意,这个问题不是 GitHub 特有的 - 我可能还想使用 BitBucket 来完成此操作。理想情况下,我也应该能够跨站点执行此操作。我在这里读过很多类似的问题,但没有明确的答案。
您可以在命令行上使用 Bitbucket 的 API 在 Bitbucket 上分叉一个项目,但您至少需要对源项目的读取权限。
语法是:
curl -v --user {username}:"{password}" \
https://bitbucket.org/api/1.0/repositories/{accountname}/{repo_slug}/fork \
--data "name=mynewrepo"
e.g.
-
分叉一个项目projectABC
从帐户ABC
到您的帐户XYZ
与名字ProjectXYZ
,使用以下命令
curl -v --user XYZ:"XYZPASSWORDXYZ" \
https://bitbucket.org/api/1.0/repositories/ABC/ProjectABC/fork \
--data "name=ProjectXYZ"
see Bitbucket 文档 https://confluence.atlassian.com/display/BITBUCKET/repository+Resource+1.0#repositoryResource1.0-POSTanewfork更多细节。
-
现在将这个项目克隆到本地计算机上,
git clone your_target_git_repository_path
-
转到您的项目目录并添加远程upstream
它将指向源存储库,
git remote add upstream source_git_repository_path
-
现在,可以随时从源存储库(例如主分支)中提取更改,请使用:
git pull upstream master
并将本地提交推送到服务器上的目标存储库,请使用:
git推送原点大师
当您对目标存储库的更改准备好与源存储库合并时,从 Bitbucket 网站或使用创建拉取请求Bitbucket API:拉取请求 https://confluence.atlassian.com/display/BITBUCKET/pullrequests+Resource#pullrequestsResource-POST%28create%29anewpullrequest
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)