git fetch --prune起源<refspec>

时间:2018-09-26 15:01:48

标签: git

我认为git fetch --prune origin <refspec>会执行以下操作

a)修剪陈旧的远程跟踪分支

b)然后像git fetch origin <refpec>一样进行抓取

但阅读doc

git fetch --prune origin refs/tags/*:refs/tags/*的行为不像上面那样。 因此,修剪行为取决于refspec。

对于传递的refspec,使用fetch进行修剪将如何表现? 我正在使用git 2.18

编辑:添加我看到的更多观察结果:

我的remote.origin.fetch = remote.origin.fetch=refs/heads/*:refs/remotes/origin/*

Why am I mentioning it ? Because of this strange relation

案例1: git fetch --prune --dry-run origin

这会修剪远程存储库中不存在的远程跟踪分支。然后像git fetch --dry-run origin

案例2: git fetch --prune --dry-run origin refs/heads/*:refs/remotes/origin/*

这首先删除所有我的远程跟踪分支(请注意,jk需要修剪并且不能重新创建),然后再次创建它们,然后对其进行更新。奇怪!这是示例:

- [deleted]         (none)     -> origin/holo
- [deleted]         (none)     -> origin/ioio
- [deleted]         (none)     -> origin/jj
- [deleted]         (none)     -> origin/jkkk
- [deleted]         (none)     -> origin/jk
* [new branch]      holo       -> holo
* [new branch]      ioio       -> ioio
* [new branch]      jj         -> jj
* [new branch]      jk         -> jkkk
= [up to date]      holo       -> origin/holo
= [up to date]      ioio       -> origin/ioio
= [up to date]      jj         -> origin/jj
= [up to date]      jkkk       -> origin/jkkk

案例3: git fetch --prune --dry-run origin mastergit fetch --prune --dry-run origin master:master

不修剪任何东西(Master也存在于远程仓库中,但是在我的本地中有远程跟踪分支需要修剪,但它没有涉及)。之后,其行为类似于git fetch --dry-run origin master

 * branch            master     -> FETCH_HEAD
 = [up to date]      master     -> origin/master

案例4: git fetch --prune --dry-run origin refs/tags/*:refs/tags/*

这只是先修剪标签,然后再像git fetch --dry-run origin refs/tags/*:refs/tags/*

案例5: git fetch origin --prune --verbose --dry-run master:refs/remotes/origin/kk

(假设远程存储库中不再存在kk分支)

首先删除refs/remotes/origin/kk,然后重新创建并更新。

 - [deleted]         (none)     -> origin/kk
 = [up to date]      master     -> origin/kk
 = [up to date]      master     -> origin/master

因此,案例1和案例4是我认为应该像我在开始提问时所解释的那样。情况2,情况3和情况5没有遵循该模式。那我该怎么总结呢?对于refspec传递,如何使用fetch进行修剪?在所有我们可以解释行为的方式中,有没有什么共同的模式?

0 个答案:

没有答案