gpt4 book ai didi

带有 refspec 差异的 Git pull/fetch

转载 作者:IT王子 更新时间:2023-10-29 01:29:52 27 4
gpt4 key购买 nike

使用 refspec 是一种获取远程分支并创建类似但具有给定名称的分支的便捷方法(或者反过来:创建一个具有与本地名称不同的给定名称的远程分支)。我对一件小事感到困惑——因为 pull 也会与当前分支 merge ,我希望有不同的行为:

git fetch origin master:mymaster

git pull origin master:mymaster

以上两个命令似乎产生完全相同的结果 - 那是一个名为 mymaster 的本地分支,与 origin/master 相同。我是对的还是两者之间有模糊的区别?

最后,使用 refspec 将创建一个本地分支而不是跟踪分支,对吧?由于当调用 git push 时没有任何参数 AFAIK 会自动推送跟踪分支

最佳答案

refspec 只是一个源/目标对。使用 refspec x:yfetch 告诉 git 在这个 repo 中创建一个名为“y”的分支,它是远程 repo 中名为“x”的分支的副本.没有别的。

使用 pull,git 在顶部抛出一个 merge 。首先,使用给定的 refspec 完成提取,然后将目标分支 merge 到当前分支中。如果这令人困惑,请按以下步骤操作:

git pull origin master:mymaster
  1. 转到原点并获得分支“master”
  2. 在本地复制一份名为“mymaster”
  3. 将“mymaster” merge 到当前分支

完全合格,即 refs/heads/mymasterrefs/heads/master。作为比较,git 在克隆上设置的默认 refspec 是 +refs/heads/*:refs/remotes/origin/*refs/remotes 提供了一个方便的命名空间,用于将远程分支与本地分支分开。您正在做的是告诉 git 将远程跟踪分支放在与本地分支相同的 namespace 中。

至于“跟踪分支”,这只是配置文件中的一个条目,告诉 git 默认情况下将本地分支 pull 入/推送到哪里。

关于带有 refspec 差异的 Git pull/fetch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com