适当的git远程跟踪实践

时间:2016-02-23 13:09:52

标签: git github permissions tracking

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;这样做的方法?

搜索后我无法找到这个问题的明确答案,如果之前已经发布了这个答案,请随时链接我,我还没有找到它。谢谢!

1 个答案:

答案 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文件中,您可以保持fetchurl参数相同,但为分叉(上游)存储库添加额外的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)

这可能不是好的或正确的做法,但它确实使它更具凝聚力。很想听听你们对此的看法!