如何防止Git克隆连接失败时自动删除已创建的空目录?
避免Git克隆时删除预先创建的空目录的方法
这个问题确实挺坑的——明明提前建好了空目录abc,结果克隆失败连目录都给删了。这里有几个靠谱的解决办法:
改用
git init+ 远程拉取的方式 最推荐
既然你已经有了空目录abc,直接进入目录,用初始化仓库再拉取的流程替代克隆:cd abc git init git remote add origin http://你的仓库地址 git fetch origin git checkout origin/main # 换成你实际需要的分支,比如master这种方式下,哪怕
fetch时连接出问题,abc目录本身会完好保留,最多只是多了个未完成的.git文件夹,后续可以继续尝试拉取,或者删掉.git重来都没问题。先克隆到临时目录,成功后再迁移
要是你更习惯用git clone命令,可以先克隆到临时目录,确认成功后再把内容移到你预先创建的abc里:git clone http://你的仓库地址 abc_temp # 确认克隆成功后再执行以下操作 mv abc_temp/* abc/ mv abc_temp/.git abc/ rm -rf abc_temp这样哪怕克隆失败,临时目录会被丢弃,但你原来的
abc完全不受影响。取消预先创建空目录(如果场景允许)
如果你不需要提前建好abc,直接让Git自动创建目录:git clone http://你的仓库地址 abc这种情况下,要是克隆失败,Git根本不会创建
abc目录(原本就不存在的话),自然也就不会有删除的问题。
顺便说下背后的原因:Git处理指定已存在的空目录作为克隆目标时,会把这个目录当作克隆的容器,一旦克隆失败,它会清理自己生成的内容——但因为目录是空的,它就干脆把目录也删掉了。上面的方法都是绕开这个默认行为的思路。
内容的提问来源于stack exchange,提问作者Max Shclover
相关产品推荐
相关产品推荐

