重新启动两个远程分支,没有写入权限

时间:2018-04-18 21:24:52

标签: git

我正在将代码移植到新服务器,而我团队的其他成员继续在主开发分支上工作。

blessed/develop <- ongoing work here
blessed/newserver <- port team here
myfork/newserver <- my fork on the port team branch

我做了两次拉取请求,主要团队已经做了三次

blessed/develop -A-B-C
blessed/newserver -D-E

我想将blessed/develop重新绑定到blessed/newserver,以便我可以处理最新的代码。

blessed/newserver -A-B-C-D-E

我可以在我的本地叉子上这样做,但我没有写入权限强制推送到blessed/newserver

git pull --rebase blessed develop
*resolve conflicts*
git push -f myfork newserver

Output:
blessed/develop -A-B-C
blessed/newserver -D-E
myfork/newserver -A-B-C-D-E

Desired:
blessed/develop -A-B-C
blessed/newserver -A-B-C-D-E
myfork/newserver -A-B-C-D-E

如果我尝试从myfork/newserver发出拉取请求,D-E会有不同的哈希值,我担心会发生这种情况:

blessed/newserver -D-E-A-B-C-D-E

有没有办法让我在没有写入权限的情况下解决这个问题?我应该只是提出我的拉取请求并让repo所有者重新提交额外的提交吗?什么是最好的方式让我跟上最新的代码,而不是通过变基(我们仅限ff)撕掉我的头。

1 个答案:

答案 0 :(得分:0)

您拥有写入权限,您没有强制推送权限,这样做是为了防止您使git pull对其他用户造成太大的痛苦。

所以你无法将其转换为

blessed/newserver -A-B-C-D-E 

你应该选择的是,

blessed/newserver -D-E-A-B-C

这可以通过以下步骤完成:

  1. 重置myfork/newserver以更正E的哈希值。获取哈希的一种方法是运行git log blessed/newserver如果您没有修改它。或者你可以在github上看到。
  2. cherrypick从blessed/develop提交到myfork/newserver。在myfork/newserver运行git cherry-pick A^..C
  3. 强制推动myfork/newserver。您可以,并将修复您的公关。