2010-12-17 158 views
11

何时提取网址和推送网址对于某个远程计算机而言不是相同的?Git“抓取URL”和“推送网址”,有什么区别?

例如,当我运行git remote show central为远程命名中心,输出的样子:

* remote central 
    Fetch URL: [email protected]:/home/aoberoi/Repositories/example.git 
    Push URL: [email protected]:/home/aoberoi/Repositories/example.git 
    HEAD branch: master 
    Remote branch: 
    master tracked 

我只是不明白为什么我会从以下获取和推到两个不同的网址,什么类型的工作流程是否适用于?

回答

10

我不知道你的意思,因为你的例子包括2 相同网址,但网址推拉可以不同,因为:

  • 协议问题:看Git protocols:该网址会是略有不同因为不是每个协议支持推送业务(HTTP例如,除了在smart http情况下)
  • 中间回购:你可以推到广告不同的存储库将成为真正的“中央”回购与您的回购之间的“中间人”。然后可以执行某些操作(例如通过post-receive钩子),然后如果这些操作(如“单元测试”,“静态代码分析”等)将提交到那里的“实际”远程... )成功通过。
    例如,这样的用法见:
    What is the cleverest use of source repository that you have ever seen?”。

话虽这么说,commit 697f652(GIT 2.3.1+,Q1/Q2 2015)由Git的维护者Junio C Hamano (gitster)做提及:

这似乎是一个常见的错误尝试使用单个遥控器(例如'起源')从一个地方(即upstream)获取,同时推向另一个地方(即您的发布点)。

这永远不会令人满意地工作,并且很容易理解为什么如果你考虑在这样的世界里什么refs/remotes/origin/*意味着什么。它从根本上不能反映现实。
如果它跟随你的上游状态,它不能匹配你发布的内容,反之亦然。

的文档并不清楚“remote.<nick>.pushURL”和“remote.<nick>.URL”有来命名通过不同的传输访问相同的资源库,不是两个单独的存储库

0

我认为如果您想要一个“分期”回购贡献者会推动,那么其他人会在审核和批准后将更改从主要回购协议推到主回购库。所以你可以从主要的回购仓库中取货,然后推到分期回购仓库。

相关问题