【问题标题】:Proper git remote tracking practice正确的git远程跟踪实践
【发布时间】:2016-06-05 08:18:06
【问题描述】:

GitHub forking documentation 概述了当您拥有自己的分叉时,最佳远程跟踪实践是将origin 作为您自己的分支,将upstream 作为您从分叉的分支:

$ 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 分支track,以便我可以看到何时需要从远程获取代码以使用当前版本进行变基,但默认情况下我还想 push 我的代码到 origin 存储库,在那里我可以向我派生的 repo 发出拉取请求(而不是尝试推送到 fork 并获得 Permission denied: 403错误)。

有没有“最好”的方法来做到这一点?

我在搜索后找不到这个问题的明确答案,如果这个答案之前已经发布过并且我还没有找到,请随时链接我。谢谢!

【问题讨论】:

    标签: git github permissions tracking


    【解决方案1】:

    所以我找到了解决这个问题的一个潜在有趣的解决方案。

    我并没有真正考虑但只是注意到的一件事是(fetch)(push) 括号在来自详细 git remote 命令的远程 URL 列表之后:

    $ 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,它有一个不同的 URL 用于获取和推送。这样,您可以跟踪默认遥控器,但也可以默认推送到另一个遥控器。我做了一些研究,结果是this is very possible

    .git/config 文件中,您可以保持fetchurl 参数相同,但为分叉(上游)存储库添加一个额外的pushurl 参数。

    [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)
    

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

    【讨论】:

      猜你喜欢
      • 2013-05-11
      • 2017-01-16
      • 2014-08-22
      • 2011-03-04
      • 2013-05-11
      • 1970-01-01
      • 2021-02-09
      • 2019-08-14
      • 2023-03-24
      相关资源
      最近更新 更多