如何更新我的裸回购?

我创build了一个裸仓库来发布我的仓库,但是我不知道如何用主仓库的当前状态来更新裸仓库。

如果您想要复制主回购库中的所有对象,请在主回购库内执行以下操作:

git push --all <url-of-bare-repo> 

或者,在裸回购里面进行取回:

 git fetch <url-of-main-repo> 

你不能做一个拉,因为一个拉想要合并HEAD ,这是一个光秃秃的回购没有。

您可以添加这些作为遥控器,以保存自己在未来打字:

 git remote add <whatever-name> <url-of-other-repo> 

那么你可以简单地做

 git push --all <whatever-name> 

要么

 git fetch <whatever-name> 

取决于你在回购什么。如果<whatever-name>origin ,你甚至可以把它完全抛弃。

免责声明:我不是一个混帐大师。 如果我说错了,我想开悟!

更新:阅读评论!

我使用以下命令创build了一个存储库

git clone --bare <remote_repo>

然后我试着用Thomas的答案更新光秃的克隆,但是这对我没有任何作用。 为了让裸仓库更新(这是我认为Let_Me_Be所要求的),我必须创build一个镜像库:

 git clone --mirror <remote_repo> 

然后,我可以在镜像存储库中运行以下命令来获取主存储库的更新:

 git fetch --all 

我通过阅读Mirroring Git Repository By Pulling来了解这个解决scheme

除了用git clone --mirror重新创build的唯一解决scheme是来自Gregor :

 git config remote.origin.fetch 'refs/heads/*:refs/heads/*' 

那么你可以git fetch ,你会看到更新。 奇怪的是,在这之前,即使有一个remoteconfiguration,它没有在git branch -a列出的git branch -a

假设:

 $ git clone --bare https://github.com/.../foo.git 

取用:

 $ git --git-dir=foo.git fetch origin +refs/heads/*:refs/heads/* --prune 

注意:如果先cd到目录,则不需要--git-dir=foo.git

经过大量的搞乱之后,我发现这对我很有用。

一旦:

 git clone --mirror ssh://git@source.address:2000/repo git remote add remote_site ssh://git@remote_site.address/repo git config remote.origin.fetch 'refs/heads/*:refs/heads/*' 

每次我想同步:

 cd /home/myhome/repo.git git --bare fetch ssh://git@source.address:2000/repo git fetch ssh://git@source.address:2000/repo git push --mirror remote_site 

将裸仓库添加为远程仓库,然后使用git push