run2016
V2EX  ›  问与答

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

By run2016 at 2017 年 8 月 20 日 · 4223 次点击

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

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

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

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

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

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

第 1 条附言  ·  2017 年 8 月 22 日
问题已解决,谢谢各位前辈。
@msg7086 说的是对的,我之前没有理清这个关系
谢谢 @AntonChen @FPGA @Loyalsoldier @vacker 帮我找到了解决方法。
不甚感激
O(∩_∩)O~
12 条回复  •  2017-08-21 09:26:18 +08:00
fcka
   1
fcka  
   2017 年 8 月 20 日 via Android
并没有说用的何种程序做的服务端……
Pastsong
   2
Pastsong  
   2017 年 8 月 20 日 via Android
服务端是裸库啊...是只有.git 的
AntonChen
   3
AntonChen  
   2017 年 8 月 20 日 via iPhone   ❤️ 1
你需要在服务器上克隆检出
run2016
   4
run2016  
OP
   2017 年 8 月 20 日
@fcka yum install git 这种的。。
run2016
   5
run2016  
OP
   2017 年 8 月 20 日
@Pastsong 嗯 我在本地仓库已经有很多 commit,想推到线上去呀。
@AntonChen 克隆检出之后,我本地的 git 仓库是不是就派不上用场了。。。 我还想保留原来的 commit 记录呀。
fcka
   6
fcka  
   2017 年 8 月 20 日 via Android
没用过裸的 girt server,不过 .git 文件夹才是本体,文件只是 .git 文件夹中某一个 commit 指针位置的表示而已,你可以自己 checkout 吧…
microhz
   7
microhz  
   2017 年 8 月 20 日
你都 push 到 Github 了,直接在 vps clone 下来试试
FPGA
   8
FPGA  
   2017 年 8 月 20 日   ❤️ 1
给服务器 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
   9
msg7086  
   2017 年 8 月 20 日   ❤️ 1
> "却是很顺利的将所有文件都推过去了。"

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

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

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

前后完全矛盾。
如果要在你服务器上拉取网站程序,你需要在上面搭一个 git 客户端。
如果希望 push 的时候签出网站程序,你需要在 git 服务器里写一个脚本,连上网站服务器然后拉取网站程序。
记住,git 服务器是 git 服务器,网站服务器是 git 客户端。
Loyalsoldier
   10
Loyalsoldier  
   2017 年 8 月 20 日   ❤️ 1
8 楼应该是对的。裸 Git Server 需要 Git Hook 自动检出
vovov
   11
vovov  
   2017 年 8 月 20 日 via Android
相信我,你需要这篇文章 https://tzwe.com/post/git-web.html
jinhan13789991
   12
jinhan13789991  
   2017 年 8 月 21 日
你需要 docker+gitlab、
© 2026 V2EX · 40ms · 3.9.8.5