请教个问题
之前一直用 git init 去创建 ,然后代码就在里面所以很容易提交代码
但我现在用 git init --bare 创建裸仓库
我的代码应该放到哪? 又在哪个目录去操作 GIT 提交代码?
1
cy97cool 2018-10-16 16:26:56 +08:00
假设当前目录为 /tmp/test
先建立个工作目录 /tmp/work 搬个家 mv /tmp/test /tmp/work.git 进入到 /tmp/work 里面 取消 bare 的设置 git config --unset core.bare 然后就能正常使用 git 了 |
2
cy97cool 2018-10-16 16:27:22 +08:00
少打了个 / 尴尬
搬个家 mv /tmp/test /tmp/work/.git |
3
jasonyang9 2018-10-16 16:30:15 +08:00
既然你用`--bare`,那创建的是中心库吧,不是直接用来提交的,而是被共享的
|
4
xia0pia0 2018-10-16 16:30:42 +08:00
先把空项目 clone 下来,后面 push 上去之后,仓库也就存了新提交的了。存放的方式不是你想的那样,通常不需要在仓库目录下边操作的,除非加些 hook。
|
5
est 2018-10-16 16:33:09 +08:00
好像可以 git --git-dir=. commit 这样。
|
6
JasonTsang OP @xia0pia0 因为是有 HOOk 的,其实我是想把项目变成一个自动化部署,也就是我在本地 提交之前,利用 post-receive 钩子,直接把新提交的变化 checkout 到我的 运行目录里。这都实现了,但有一个问题,运行目录 也会产生很多文件,比如用户上传的图片 ,这样我是希望在本地 能通过 pull 拉取么这些更新。
|
7
JasonTsang OP @jasonyang9 但无法提交,说明 如果服务器上的代码有什么变化,我本地也是无法 pull 到
|
8
bitsong 2018-10-16 17:00:08 +08:00
--bare 创建的裸仓库一般用于做远程中心库,中心库为了共享代码所以不能执行一些代码操作,以避免冲突。
|
9
bitsong 2018-10-16 17:15:16 +08:00
刚没看到楼主你是想做源码目录和仓库目录分离,用户上传文件这类不经过 git 提交到源码目录,没法直接 pull 到,你可以考虑加个 rsync 来实现,如果有知道直接用 git 就完成这套操作的方法,我也要学习下
|
10
msg7086 2018-10-17 06:53:04 +08:00
一般 bare 仓库是当做服务器用的,普通仓库则相当于客户端。提交都是在客户端(目录)交进数据库以后再同步到服务器(目录)的。
另外其实不是很推荐用 Git 直接管理服务器部署工作。最好还是由专门的部署工具负责。 |