如果我理解分叉,它在概念上涉及以下步骤:
这就是它的样子:
Original <──upstream─── Forked
(server) (server)
↑
│origin
│
(local)
与克隆的主要区别在于这些步骤是服务器端,而非本地步骤。如何在git命令行上手动复制?
这是我到目前为止所做的事情:
在这个阶段,我已经在本地仓库上设置了所有内容。我可以使用中间本地克隆同步原始和分叉回购之间的更改。所以这就是我所拥有的:
Original Forked
(server) (server)
↑ ↑
│ │origin
│ │
└───────upstream─── (local)
现在如何将此链接推送到服务器,即将原始仓库设为服务器端分叉仓库的上游远程,以匹配第一个图表?
请注意,这个问题不是GitHub特有的 - 我可能也想用BitBucket做这个。理想情况下,我也应该可以跨站点执行此操作。我在这里已经阅读了很多类似的问题,但是没有明确的答案。
答案 0 :(得分:7)
您可以在命令行上使用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"
请参阅Bitbucket documentation了解详情。
现在在本地计算机上克隆此项目,
git clone your_target_git_repository_path
转到项目目录并添加指向源存储库的远程upstream
,
git remote add upstream source_git_repository_path
现在,在任何时候从源存储库(例如从主分支)中提取更改,请使用:
git pull upstream master
并将您的本地提交推送到服务器上的目标存储库,使用: git push origin master
当目标存储库上的更改准备好与源存储库合并时,可以从Bitbucket网站或使用Bitbucket API: Pull Request
答案 1 :(得分:1)
对于GitHub,显然您现在可以使用hub fork
使用命令git clone git@github.com:some_user_or_organization/some_project.git
cd some_project
hub fork
执行此操作。我没有使用它,但根据文档看起来你会这样做:
origin
...你最终会得到两个遥控器:hub
指向上游,一个与你的GitHub用户名相同的指向你的新叉子。 (如果function duplicateNumber(array) {
var hash = Object.create(null),
i, l, value;
for (i = 0, l = array.length; i < l; i++) {
value = array[i];
if (hash[value]) {
return value;
}
hash[value] = true;
}
}
console.log(duplicateNumber([3, 5, 6, 8, 5, 3])); // 5
console.log(duplicateNumber([0, 1, 2, 3, 4, 4, 5])); // 4
console.log(duplicateNumber([0, 1, 1, 2, 3, 4, 4, 5])); // 1
也分别将远程名称切换为“上游”和“原点”,那将会很好,但我不认为它会这样做。)
答案 2 :(得分:0)
创建回购的本地副本的步骤 - 指向最终的分叉回购正如您详细说明的那样。
下一步是创建分叉回购。可以使用Github API
从命令行完成 - 而不是git
;有关详情,请参阅https://stackoverflow.com/a/2425632/429758。
之后,完成手动分叉是一个简单的git push origin master
。
注意:Bitbucket也提供了一个REST API,允许从命令行创建forked repo。
答案 3 :(得分:0)
当您推送到fork时,请尝试以下选项: - mirror
https://git-scm.com/docs/git-push#git-push---mirror
这可能意味着您需要在克隆时指定--mirror选项以将远程控制器发送到本地存储库。
或者,您可以在回购中包含远程设置脚本,并在项目的开发人员设置手册中引用它。