【发布时间】:2014-12-08 15:51:15
【问题描述】:
我已经裸克隆了一个存储库 (git clone --bare),显然 git fetch 不会更新它,但 git fetch origin master:master 会。我不明白这些语法之间的所有细微差别:
git fetchgit fetch origingit fetch origin mastergit fetch origin master:master
origin 是我唯一的遥控器,master 是我唯一的分支,帮助说:
当没有指定遥控器时,默认使用原始遥控器
那么为什么这四行不一样呢?
编辑:前三个命令似乎在一个名为 FEATCH_HEAD 的临时分支中获取。但由于我使用的是裸克隆,因此无法使用git merge 获取获取的结果。
Edit2: 根据@torek 的回答,我做了一个小测试并区分了 --bare 和 --mirror 克隆目录。结果如下:
diff -ru mesa.bare.git/config mesa.mirror.git/config
--- mesa.bare.git/config 2014-10-14 20:01:42.812226509 -0400
+++ mesa.mirror.git/config 2014-10-14 20:00:53.994985222 -0400
@@ -4,3 +4,5 @@
bare = true
[remote "origin"]
url = git://anongit.freedesktop.org/mesa/mesa
+ fetch = +refs/*:refs/*
+ mirror = true
Only in mesa.bare.git/objects/pack: pack-17005b7e1020d291eb86d778a174ecf0d60d92a9.idx
Only in mesa.bare.git/objects/pack: pack-17005b7e1020d291eb86d778a174ecf0d60d92a9.pack
Only in mesa.mirror.git/objects/pack: pack-c08b44b7f290ef0bc9abe3a0b974695c85a69342.idx
Only in mesa.mirror.git/objects/pack: pack-c08b44b7f290ef0bc9abe3a0b974695c85a69342.pack
谢谢!
【问题讨论】:
-
你读过kernel.org/pub/software/scm/git/docs/git-fetch.html 吗?如果是这样,请编辑问题以澄清阅读后不清楚的地方(如果有的话)。否则,请自己回答问题(并在此处发布答案)!
-
当然看过了,不然怎么引用
git help fetch的一句话? -
通常你会希望在你的配置的原始部分有一个像“fetch = refs/heads/*:ref/heads/*”这样的行,然后它会让
git fetch表现得像你期待 -
啊,我应该注意到你引用了帮助。抱歉打扰了。