最近搞了一个 django 网站的小 demo,想着把他放到新买的 digital ocean 的 vps 上去。于是在上边搭了一个 git 服务器,一切正常。
由于本地机器(Sierra)上的项目是有 commit 记录的,之前未与任何远端服务器建联。我想保存这些记录,推到线上去。把他推送到 centOS 7 的 vps 上,成功后我去一看,原来就仅仅是把我项目中的.git 文件夹推送上去,而其他的文件都没有上去。
于是我又随意新增了几个文件,多搞几个 commit,再推,发现每次还是只把我的.git 文件夹推上去。 不知道哪里出了问题?
我试着用一模一样的办法,在 github 上新建了一个 repo,建立联系后往上推,却是很顺利的将所有文件都推过去了。
一样的方法,只是服务器不同,为什么会出现这种问题呢?
这样的问题如何解决呢? 谢谢各位前辈
1
fcka 2017-08-20 14:33:31 +08:00 via Android
并没有说用的何种程序做的服务端……
|
2
Pastsong 2017-08-20 14:39:07 +08:00 via Android
服务端是裸库啊...是只有.git 的
|
3
AntonChen 2017-08-20 14:40:09 +08:00 via iPhone 1
你需要在服务器上克隆检出
|
5
run2016 OP |
6
fcka 2017-08-20 15:23:54 +08:00 via Android
没用过裸的 girt server,不过 .git 文件夹才是本体,文件只是 .git 文件夹中某一个 commit 指针位置的表示而已,你可以自己 checkout 吧…
|
7
microhz 2017-08-20 16:32:33 +08:00
你都 push 到 Github 了,直接在 vps clone 下来试试
|
8
FPGA 2017-08-20 16:41:47 +08:00 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 ``` |
9
msg7086 2017-08-20 17:36:12 +08:00 1
> "却是很顺利的将所有文件都推过去了。"
说得好像你能登录进 Github 服务器看文件列表似的。 推送本来就是在.git 里,这是保存了你 Repo 所有数据的数据库,要推的话永远就只会推.git ,不会推别的东西。 你所有的文件,所有的提交记录,所有的分支和标签,都在.git 里。 > "于是在上边搭了一个 git 服务器" 前后完全矛盾。 如果要在你服务器上拉取网站程序,你需要在上面搭一个 git 客户端。 如果希望 push 的时候签出网站程序,你需要在 git 服务器里写一个脚本,连上网站服务器然后拉取网站程序。 记住,git 服务器是 git 服务器,网站服务器是 git 客户端。 |
10
Loyalsoldier 2017-08-20 19:17:10 +08:00 1
8 楼应该是对的。裸 Git Server 需要 Git Hook 自动检出
|
11
vacker 2017-08-20 20:50:09 +08:00 via Android
相信我,你需要这篇文章 https://tzwe.com/post/git-web.html
|
12
jinhan13789991 2017-08-21 09:26:18 +08:00
你需要 docker+gitlab、
|