git init --bare 创建的仓库,怎么提交代码>?

2018-10-16 16:18:38 +08:00
 JasonTsang

请教个问题

之前一直用 git init 去创建 ,然后代码就在里面所以很容易提交代码

但我现在用 git init --bare 创建裸仓库

我的代码应该放到哪? 又在哪个目录去操作 GIT 提交代码?

4629 次点击
所在节点    git
10 条回复
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 了
cy97cool
2018-10-16 16:27:22 +08:00
少打了个 / 尴尬
搬个家 mv /tmp/test /tmp/work/.git
jasonyang9
2018-10-16 16:30:15 +08:00
既然你用`--bare`,那创建的是中心库吧,不是直接用来提交的,而是被共享的
xia0pia0
2018-10-16 16:30:42 +08:00
先把空项目 clone 下来,后面 push 上去之后,仓库也就存了新提交的了。存放的方式不是你想的那样,通常不需要在仓库目录下边操作的,除非加些 hook。
est
2018-10-16 16:33:09 +08:00
好像可以 git --git-dir=. commit 这样。
JasonTsang
2018-10-16 16:40:27 +08:00
@xia0pia0 因为是有 HOOk 的,其实我是想把项目变成一个自动化部署,也就是我在本地 提交之前,利用 post-receive 钩子,直接把新提交的变化 checkout 到我的 运行目录里。这都实现了,但有一个问题,运行目录 也会产生很多文件,比如用户上传的图片 ,这样我是希望在本地 能通过 pull 拉取么这些更新。
JasonTsang
2018-10-16 16:41:42 +08:00
@jasonyang9 但无法提交,说明 如果服务器上的代码有什么变化,我本地也是无法 pull 到
bitsong
2018-10-16 17:00:08 +08:00
--bare 创建的裸仓库一般用于做远程中心库,中心库为了共享代码所以不能执行一些代码操作,以避免冲突。
bitsong
2018-10-16 17:15:16 +08:00
刚没看到楼主你是想做源码目录和仓库目录分离,用户上传文件这类不经过 git 提交到源码目录,没法直接 pull 到,你可以考虑加个 rsync 来实现,如果有知道直接用 git 就完成这套操作的方法,我也要学习下
msg7086
2018-10-17 06:53:04 +08:00
一般 bare 仓库是当做服务器用的,普通仓库则相当于客户端。提交都是在客户端(目录)交进数据库以后再同步到服务器(目录)的。

另外其实不是很推荐用 Git 直接管理服务器部署工作。最好还是由专门的部署工具负责。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/498163

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX