在空存储库上运行git pull而不会出错

时间:2012-10-31 11:58:48

标签: git

我有一个目录列表,我想运行git pull

其中一些可能是空的。

当我在其上运行git pull时,我收到此错误:

Your configuration specifies to merge with the ref 'master'
from the remote, but no such ref was fetched.

,退出代码为1

如果任何命令失败,我的脚本将退出。

是否可以检测是否由于此错误而失败?或者任何其他方式拉出哪些不会在空存储库中出错?

修改:.git/config

git:(master) cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = <git repo url>
[branch "master"]
    remote = origin
    merge = refs/heads/master

2 个答案:

答案 0 :(得分:1)

这取自here

要在 路径 中克隆空仓库,

  1. 保持〜/ git / onefile 包含一个无害的非裸git仓库 .gitignore等文件。 (或者,创建这样一个回购
    动态地。)
  2. (cd~ / git / onefile; git push 路径 master)
  3. git clone -o 名称 路径
  4. 换句话说,不要尝试克隆空仓库,而是在创建它之后,向它推送一个包含一个无害文件的简单仓库。然后它不再是空的,可以克隆。

答案 1 :(得分:1)

您可以在远程参考存在的情况下测试它。例如,init之后主引用尚不存在,因此在windows批处理脚本中它将是这样的:

git ls-remote -h --exit-code myrepo master > nul && (
  git pull myrepo master
)