技术解析

搭了一个 git 服务器,但是 push 不成功
0
1975-02-25 10:48:05
idczone
按照教程搭了一个 git 服务器
http://blog.csdn.net/xsl1990/article/details/25486211

在 git 服务器上建立了一个空仓库后,在自己的机子可以成功 git clone 下来
但是在自己机子上做完一些修改
git push 也正常,没有报错

Counting objects: 18, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (18/18), done.
Writing objects: 100% (18/18), 10.15 KiB | 0 bytes/s, done.
Total 18 (delta 5), reused 0 (delta 0)
To [email protected]×.×:/home/ncer/gittest
* [new branch] master -> master

但是到那个服务器上看,并没有文件提交上去……
求指导,不知道是啥问题~~
已经成功,只是你不会用分布式管理工具而已。

不好意思,以前只用过 github ,还是第一次用这个
不只能否指教?

其实只是把 .git/ 下的文件 push 了,你有必要完整看一遍: https://git-scm.com/book/en/v2

你重新在另外一个文件夹 clone 一遍就看到新文件了。如果已经 clone 过的,请使用 git fetch && git merge/rebase origin/master

服务器上是看不到文件的

你可以 clone 下来看,或者 checkout 文件一个个看


哦哦哦,懂了!是我基本功不扎实!

1 、你件的仓库是 bare , 所以服务器根本不会检出 工作区。
2 、即使你的仓库不是 bare ,服务器工作区也不会因为你执行 push 而更新,仍然需要你自己执行 git rebase/merge.

github 我理解的是 git 的仓库 web 控制台,而实际根本也是用的 git 工具..
我没理解 github 和 git 有什么不同....(其他周边另记)
个人觉得诸如此类工具性质的东西,没比较花太多时间研究
安利楼主一个可以迅速搭建的私有 git 库
开发的 gogit https://gogs.io/
楼主也可以参考下 github 上 gogs 的 start 数
- -


是的,我的意思是说平时在 github 上只用过简单的 commit push poll ,
没有深入了解原理

本来就没有~

git --bare init 建立的是裸仓库,也就是你在 .git/ 内部看到的样子。
至于 Working Directory ,需要你从仓库里签出才行。

git 还需要服务器么?我都是 ssh 连接的

我遇到过,明天发脚本你,推送成功,但是不显示文件是吧。

1.设置远程创库地址
git remote add origin ssh://[email&或者 add 修改(set-url )
2.push 推送
git push origin master 首次执行
git push
3.然后在远程创库执行以下命令,才可以看到更新的内容
git config --unset core.bare 首次执行
git reset --hard

应该是没有把远程目录的最新版本给 pull 下来。之后才能 commit ,最后才能 push 。

直接用 gitbucket,https://github.com/gitbucket/gitbucket

请 checkout 出来

如果是 github 的仓库,可以挂梯子,我用的是天路加速器,看他们官网的命令行加速器教程,可以提速几十倍, https://91tianlu.com/knowledgebase.php

我刚刚试了一下,要想同步 push 的文件,在服务器创建 project 时,不要创建裸仓库
. 创建支持工作目录的远程仓库
远程服务器初始化仓库
git init <仓库名>
设置允许远程接收文件
git config receive.denyCurrentBranch ignore
cd 仓库名 /.git ,在 hooks 文件夹中添加 post-receive 钩子文件(用于自动更新工作目录内容)
touch post-receive
vim post-receive
加入内容
WORK_TREE='../'
git --work-tree="${WORK_TREE}" reset --hard
然后保存
chmod -R 777 post-receive (为该文件赋予权限)
然后你再 push 时就可以看到上面的文件了

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服