如何将本地文件夹作为Git远程仓库

1,296 阅读1分钟

背景

有一个共享文件夹,里面的文件需要周期性更新。于是想将其作为一个Git repo实现版本管理。

远程仓库

初始化远程仓库:

git init

这里不建裸仓库(有些教程会加上--bare参数建立裸仓库),因为裸仓库没有工作目录,只有.git子目录,看不到文件。

还需要加上配置,解决非裸仓库作为仓库的问题:

git config --global receive.denyCurrentBranch ignore

进入.git/hooks目录,加上post-update钩子(把.sample后缀去掉才能生效):


# 把自带的这句注释掉,这句是用来确保用HTTP克隆仓库(非裸仓库加上这句话会使后续脚本失效)

# exec git update-server-info

unset GIT_DIR

cd ..

git checkout -f # 关键是这句

git checkout -f的作用:当使用git init初始化仓库时,该远程仓库也包含work tree,在本地push到远程master后,如果远程仓库也在master上,push的结果不会体现在work tree上(如果当时在其他分支上,可以体现)。表现就是log存在,但新增文件不存在(显示为deleted)git checkout -f语句就是用于清除本地的changes。

本地仓库

初始化本地仓库:

git init

添加远程仓库:

git remote add rmprogress ${文件夹路径}

然后就可以顺利push/pull啦

参考

Git局域网内仓库搭建_腾讯新闻

Git push成功后,远程仓库将文件显示为已删除,且找不到push的文件