GitHub forking documentation概述了当您拥有自己的分支时,最好的远程跟踪练习是将origin
作为您自己的分支,将upstream
作为您分支的分支:< / p>
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
理想情况下,我希望能够从upstream
分支跟踪,以便我可以看到何时需要从远程获取代码以使用当前版本进行rebase,但是默认情况下,我也希望将我的代码推送到origin
存储库,在那里我可以向我分叉的repo发出一个pull-request(而不是试图推送到fork并获取Permission denied: 403
错误。
是否有最好的&#34;这样做的方法?
搜索后我无法找到这个问题的明确答案,如果之前已经发布了这个答案,请随时链接我,我还没有找到它。谢谢!
答案 0 :(得分:0)
所以我找到了解决这个问题的潜在有趣解决方案。
在我从详细(fetch)
命令列出远程网址后,我没有想到的一件事只是注意到了(push)
和git remote
个括号:
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
如果您可以使用单个遥控器origin
,它具有不同的抓取和推送网址,该怎么办?这样,您可以跟踪默认远程,但也可以默认推送到另一个远程。我做了一些研究,结果是this is very possible。
在.git/config
文件中,您可以保持fetch
和url
参数相同,但为分叉(上游)存储库添加额外的pushurl
参数。< / p>
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
pushurl = https://github.com/YOUR_USERNAME/YOUR_FORK.git
这导致以下输出:
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
origin https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
这可能不是好的或正确的做法,但它确实使它更具凝聚力。很想听听你们对此的看法!