如何使用git从远程源更新裸仓库

时间:2011-05-25 22:20:05

标签: git github

我有一个repo,它是github repo的裸克隆:

 git clone --bare git@github.com:PabloSerbo/maiden.git

许多开发人员克隆该回购并推回它。

另一位开发人员直接致力于github repo。

我想知道如何将github上的更改恢复到其他开发人员可以使用的裸仓库中。

我试过了:

 git fetch origin

这似乎取决于:

 remotes/origin/master

但是我无法让当地人知道改变。

我能找到的最接近的问题是:

How do I update my bare repo?

这表明镜像,但我想知道是否有办法在不需要镜像的情况下实现这一点。

3 个答案:

答案 0 :(得分:4)

自己克隆裸仓库。这将有源于此。现在将github repo添加为'github'remote。您现在可以从github获取分支和标记,然后将它们推送到原点。

git fetch github
git push origin github/yourbranchname:yourbranchname

希望这有帮助。

答案 1 :(得分:1)

这种方法对我有用:

git fetch origin master:master

然后

git update-server-info (I am using http to access bare repository, not sure that it has sense if you use another type ot transport  )

但它只更新master分支。我仍然不知道如何更新所有分支

答案 2 :(得分:0)

我发现对裸/镜像回购执行git remote update也是必要的。否则HEAD和主人就落后了。在验证提取的提交是否正常后,通常需要先移动HEAD。

marcgc@deb6marc:~/projs/8568/svn/mix3/mIST_SE.git$ git fetch geekisp
carnicer@login.geekisp.com's password: 
remote: Counting objects: 19, done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 14 (delta 10), reused 0 (delta 0)
Unpacking objects: 100% (14/14), done.
From login.geekisp.com:marc/tecsidel/git/mix/mIST_SE
 * [new branch]      master     -> geekisp/master
marcgc@deb6marc:~/projs/8568/svn/mix3/mIST_SE.git$ git lol
* 835bede (geekisp/master) dont crash
* 6de0db7 v2.0.11
* 42336a0 rename PicSearchAlga to PicSearch
* 845728d goto with 2 pix instead of 3
* a08ca13 (HEAD, master) v2.0.10
* 51c984e v2.0.8 : show CC in report (bugfix)

在执行提取之前,HEAD和master指向同一个提交。为了使它们指向最新的提交,有必要进行远程更新:

marcgc@deb6marc:~/projs/8568/svn/mix3/mIST_SE.git$ git remote update geekisp
Fetching geekisp
carnicer@login.geekisp.com's password: 
marcgc@deb6marc:~/projs/8568/svn/mix3/mIST_SE.git$ git lol
* 835bede (HEAD, geekisp/master, master) dont crash
* 6de0db7 v2.0.11

现在所有引用(HEAD,master)都指向最新的提交。

编辑/升级:

在愉快地写下我的答案之后,我发现我的解决方案没有 工作了。我试着在另一台电脑上做同样的事情。

marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$ git fetch geekisp
carnicer@login.geekisp.com's password:
Fetching geekisp
remote: Counting objects: 20, done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 14 (delta 11), reused 0 (delta 0)
Unpacking objects: 100% (14/14), done.
From login.geekisp.com:marc/tecsidel/git/mix/mIST_SE
   835bede..4e2e92e  master     -> geekisp/master
marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$ 
marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$ git lol
* 4e2e92e (geekisp/master, geekisp/HEAD) best search type, finds something
* d16406a start to see search types for sweden
* 9809ccd v2.0.12
* 835bede dont crash
* 6de0db7 v2.0.11
* 42336a0 rename PicSearchAlga to PicSearch
* 845728d goto with 2 pix instead of 3
* a08ca13 (HEAD, master) v2.0.10
marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$ 
marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$ git remote update geekisp
carnicer@login.geekisp.com's password:
Fetching geekisp
marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$ 

我被困在这里了。 HEAD和主人没有指着 按预期最新提交。

marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$ git lol
* 4e2e92e (geekisp/master, geekisp/HEAD) best search type, finds something
* d16406a start to see search types for sweden
* 9809ccd v2.0.12
* 835bede dont crash
* 6de0db7 v2.0.11
* 42336a0 rename PicSearchAlga to PicSearch
* 845728d goto with 2 pix instead of 3
* a08ca13 (HEAD, master) v2.0.10

看起来我的解决方案无效。谷歌搜索后我找到了解决方案。

fetch命令似乎还需要 refspec ,例如 master:master 就我而言。

marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$ git fetch geekisp master:master
carnicer@login.geekisp.com's password:
From login.geekisp.com:marc/tecsidel/git/mix/mIST_SE
   a08ca13..4e2e92e  master     -> master
marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$
marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$ git lol
* 4e2e92e (HEAD, geekisp/master, geekisp/HEAD, master) best search type, finds somet
* d16406a start to see search types for sweden
* 9809ccd v2.0.12
* 835bede dont crash
* 6de0db7 v2.0.11
* 42336a0 rename PicSearchAlga to PicSearch
* 845728d goto with 2 pix instead of 3
* a08ca13 v2.0.10
* 51c984e v2.0.8 : show CC in report (bugfix)
marc@ibm:~/tecsidel/git/mix2/mIST_SE.git$

所以这似乎就是它。