CentOS 上搭建了一个 git 服务器,代码推送的诡异问题。

2017-08-20 14:14:43 +08:00
 run2016

最近搞了一个 django 网站的小 demo,想着把他放到新买的 digital ocean 的 vps 上去。于是在上边搭了一个 git 服务器,一切正常。

由于本地机器(Sierra)上的项目是有 commit 记录的,之前未与任何远端服务器建联。我想保存这些记录,推到线上去。把他推送到 centOS 7 的 vps 上,成功后我去一看,原来就仅仅是把我项目中的.git 文件夹推送上去,而其他的文件都没有上去。

于是我又随意新增了几个文件,多搞几个 commit,再推,发现每次还是只把我的.git 文件夹推上去。 不知道哪里出了问题?

我试着用一模一样的办法,在 github 上新建了一个 repo,建立联系后往上推,却是很顺利的将所有文件都推过去了。

一样的方法,只是服务器不同,为什么会出现这种问题呢?

这样的问题如何解决呢? 谢谢各位前辈

3077 次点击
所在节点    问与答
12 条回复
fcka
2017-08-20 14:33:31 +08:00
并没有说用的何种程序做的服务端……
Pastsong
2017-08-20 14:39:07 +08:00
服务端是裸库啊...是只有.git 的
AntonChen
2017-08-20 14:40:09 +08:00
你需要在服务器上克隆检出
run2016
2017-08-20 14:44:07 +08:00
@fcka yum install git 这种的。。
run2016
2017-08-20 14:46:20 +08:00
@Pastsong 嗯 我在本地仓库已经有很多 commit,想推到线上去呀。
@AntonChen 克隆检出之后,我本地的 git 仓库是不是就派不上用场了。。。 我还想保留原来的 commit 记录呀。
fcka
2017-08-20 15:23:54 +08:00
没用过裸的 girt server,不过 .git 文件夹才是本体,文件只是 .git 文件夹中某一个 commit 指针位置的表示而已,你可以自己 checkout 吧…
microhz
2017-08-20 16:32:33 +08:00
你都 push 到 Github 了,直接在 vps clone 下来试试
FPGA
2017-08-20 16:41:47 +08:00
给服务器 git 目录加个钩子,`.git/hooks` 目录新建 `post-receive` ,注意给执行权限
```sh
#!/bin/sh
DIR=`cd $(dirname $0); pwd`
WORKING="$DIR/../../"
GIT="$DIR/../"

git --work-tree=$WORKING --git-dir=$GIT checkout -f
```
msg7086
2017-08-20 17:36:12 +08:00
> "却是很顺利的将所有文件都推过去了。"

说得好像你能登录进 Github 服务器看文件列表似的。

推送本来就是在.git 里,这是保存了你 Repo 所有数据的数据库,要推的话永远就只会推.git ,不会推别的东西。
你所有的文件,所有的提交记录,所有的分支和标签,都在.git 里。

> "于是在上边搭了一个 git 服务器"

前后完全矛盾。
如果要在你服务器上拉取网站程序,你需要在上面搭一个 git 客户端。
如果希望 push 的时候签出网站程序,你需要在 git 服务器里写一个脚本,连上网站服务器然后拉取网站程序。
记住,git 服务器是 git 服务器,网站服务器是 git 客户端。
Loyalsoldier
2017-08-20 19:17:10 +08:00
8 楼应该是对的。裸 Git Server 需要 Git Hook 自动检出
vacker
2017-08-20 20:50:09 +08:00
相信我,你需要这篇文章 https://tzwe.com/post/git-web.html
jinhan13789991
2017-08-21 09:26:18 +08:00
你需要 docker+gitlab、

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

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

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

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

© 2021 V2EX