我正在将代码移植到新服务器,而我团队的其他成员继续在主开发分支上工作。
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)撕掉我的头。
答案 0 :(得分:0)
您拥有写入权限,您没有强制推送权限,这样做是为了防止您使git pull
对其他用户造成太大的痛苦。
所以你无法将其转换为
blessed/newserver -A-B-C-D-E
你应该选择的是,
blessed/newserver -D-E-A-B-C
这可以通过以下步骤完成:
myfork/newserver
以更正E
的哈希值。获取哈希的一种方法是运行git log blessed/newserver
如果您没有修改它。或者你可以在github上看到。blessed/develop
提交到myfork/newserver
。在myfork/newserver
运行git cherry-pick A^..C
。myfork/newserver
。您可以,并将修复您的公关。