我遵循通用的 OSS 结构:
- 托管在 GitHub 上的 OSS 远程存储库
- OSS远程存储库的一个分支到我自己的远程存储库
- 在我的远程存储库上克隆 fork 以创建本地存储库
因此,贡献者将在本地创建一个新分支,将更改推送到他/她的远程存储库,然后向 OSS 的远程存储库打开一个拉取请求。
这一直运作良好。但是,当我尝试通过在本地摆弄其他贡献者的拉取请求来查看它时,主要问题就出现了。
因此,我使用以下命令获取了对 OSS 远程存储库的拉取请求:
git fetch upstream pull/<PR#>/head:<branchName>
其次是git checkout <branchName>
它是成功的。我玩弄了 PR,并在 GitHub 上对其进行了审查。然后,贡献者通过将新提交推送到他们的分支(在他们的远程仓库上)来更新 PR,这会自动反映在 PR 中。
现在,我希望能够在本地获取更新,以便再次尝试更改。我了解我的 PR 分支副本默认不跟踪远程分支,所以我尝试将其设置为跟踪 PR:
git branch --set-upstream upstream/pull/<PR#>/head:<branchName>
就像我第一次取树枝时所做的那样。然而,我得到的回应是
错误:请求的上游分支 'pull//head:' 不存在
我再次尝试:
git branch --set-upstream-to upstream/pull/<PR#>/head:<branchName>
这也因同样的错误而失败。
然后,我想,是不是因为 PR 就像是某人远程存储库上分支的“反映”,所以如果我想跟踪上游分支,我应该从该人的远程存储库中跟踪?
所以我将贡献者的远程存储库添加为远程,并再次尝试:
git branch --set-upstream-to <newRemote> <branchName>
我仍然面临同样的错误。
我做了一些谷歌搜索,发现了这个,但我不想获得所有的拉取请求。我还找到了这样的链接,但不是,不是我需要的帮助。
谁能指出我现在做事的方式有什么问题?谢谢!
编辑:除了下面的 Marina Liu - MSFT 提出的建议之外,还有更简单的方法吗?