git:在refspecs中使用远程引用推送

git:在refspecs中使用远程引用推送,git,Git,有人能给我解释一下(或者给我一个好的推荐人)下面的问题吗 我知道以下是我必须使用的正确推送命令: git push origin refs/heads/master:refs/heads/master (I also know that it has short forms, like: git push origin master:master or git push origin master) 然而,有一次,我(错误地)推了两下:

有人能给我解释一下(或者给我一个好的推荐人)下面的问题吗

我知道以下是我必须使用的正确推送命令:

git push origin refs/heads/master:refs/heads/master

   (I also know that it has short forms, like:
        git push origin master:master
        or
        git push origin master)
然而,有一次,我(错误地)推了两下:

git报告两个命令中都没有错误,尽管在(1)中,我没有远程名称“heads”

  • 我的第一个问题是:在这些情况下,git向远程存储库推送了什么?它们会伤害我的远程存储库吗

  • 第二个问题是:“refs/remotes”下的所有内容都是远程引用 它们要知道最后一次服务器提交时对应远程分支上的最后一个提交ID。就为了这个吗 (例如,仅供参考),是否有git命令使用这些引用

更新我对命令的发现(2)

我通过以下方式再次仔细验证了命令(2)的行为:

  • 备份远程存储库
  • 做第(2)项
  • 比较两个存储库(当前存储库和备份存储库)
我发现当前版本(受命令(2)影响的版本)存在差异

  • 在“objects”文件夹中,创建了两个新文件:一个是.pack文件,另一个是.idx文件
  • 在“refs”文件夹中,创建了一个新的refs“remotes/Originates/master”
我注意到命令(2)的输出是

现在我做了另一个测试:

  • 将远程repo克隆为2个本地repo
  • 在一个本地repo中,我对文件commit、push(git-push-originmaster)进行了更改
  • 在另一个本地回购协议中

    • 我对文件进行了更改,提交
    • 推动 git推送源主机:主机

      我从git收到一条错误消息:
      “…![拒绝]master->master(非快进)…”
      这就是我所期望的

    • 然后我用命令(2)推了一下,结果就是我前面提到的

所以很明显(2)与git push origin master不同

远程存储库中“refs”文件夹
的含义是什么?命令(2)在中创建新的“参照”
远程存储,它指的是什么

  • (2)推送与git推送原始主机非常相似。不过我不太清楚

  • 如“”中所述,
    refs/remotes
    命名空间if用于跟踪分支:即表示“上次更新远程跟踪分支时远程存储库中分支的状态”。
    这些引用由git fetch使用,以了解要获取的提交内容(与回购协议中已有的内容相比)
    有关更多信息,请参阅SO contributor撰写的博客文章“”

  • (2)推送与git推送原始主机非常相似。不过我不太清楚

  • 如“”中所述,
    refs/remotes
    命名空间if用于跟踪分支:即表示“上次更新远程跟踪分支时远程存储库中分支的状态”。
    这些引用由git fetch使用,以了解要获取的提交内容(与回购协议中已有的内容相比)
    有关更多信息,请参阅SO contributor撰写的博客文章“”


  • 谢谢,回到我的第一个问题,我发现(2)做了一些不同的事情,我用关于它的发现更新了我的问题+1关于“远程跟踪”的参考谢谢,回到我的第一个问题,我发现(2)做了一些不同的事情,我用关于它的发现更新了我的问题+1供“远程跟踪”参考
      (1) git push origin refs/heads/master:refs/remotes/heads/master
    
      (2) git push origin refs/heads/master:refs/remotes/origin/master
    
    Counting objects: 842, done.
    Compressing objects: 100% (337/337), done.
    Writing objects: 100% (651/651), 336.30 KiB, done.
    Total 651 (delta 243), reused 612 (delta 218)
    To file:///data/resto/central-repo
     * [new branch]      master -> origin/master