搭了一个 git 服务器,但是 push 不成功

2016-02-02 23:41:31 +08:00
 Ncer
按照教程搭了一个 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 ncer@104.236.×.×:/home/ncer/gittest
* [new branch] master -> master

但是到那个服务器上看,并没有文件提交上去……
求指导,不知道是啥问题~~
6461 次点击
所在节点    Linux
20 条回复
pagxir
2016-02-02 23:51:42 +08:00
已经成功,只是你不会用分布式管理工具而已。
Ncer
2016-02-02 23:56:57 +08:00
@pagxir 不好意思,以前只用过 github ,还是第一次用这个
不只能否指教?
int64ago
2016-02-02 23:58:14 +08:00
@Ncer 其实只是把 .git/ 下的文件 push 了,你有必要完整看一遍: https://git-scm.com/book/en/v2
pagxir
2016-02-02 23:58:58 +08:00
你重新在另外一个文件夹 clone 一遍就看到新文件了。如果已经 clone 过的,请使用 git fetch && git merge/rebase origin/master
fan123199
2016-02-03 00:00:08 +08:00
服务器上是看不到文件的
fan123199
2016-02-03 00:01:06 +08:00
你可以 clone 下来看,或者 checkout 文件一个个看
Ncer
2016-02-03 00:01:23 +08:00
@int64ago @pagxir @fan123199
哦哦哦,懂了!是我基本功不扎实!
pagxir
2016-02-03 00:02:29 +08:00
1 、你件的仓库是 bare , 所以服务器根本不会检出 工作区。
2 、即使你的仓库不是 bare ,服务器工作区也不会因为你执行 push 而更新,仍然需要你自己执行 git rebase/merge.
publicAdmin
2016-02-03 00:04:41 +08:00
@Ncer github 我理解的是 git 的仓库 web 控制台,而实际根本也是用的 git 工具..
我没理解 github 和 git 有什么不同....(其他周边另记)
个人觉得诸如此类工具性质的东西,没比较花太多时间研究
安利楼主一个可以迅速搭建的私有 git 库
@Unknwon 开发的 gogit https://gogs.io/
楼主也可以参考下 github 上 gogs 的 start 数

- -
Ncer
2016-02-03 00:10:45 +08:00
@publicAdmin
是的,我的意思是说平时在 github 上只用过简单的 commit push poll ,
没有深入了解原理
moliliang
2016-02-03 00:23:48 +08:00
本来就没有~
msg7086
2016-02-03 01:16:41 +08:00
git --bare init 建立的是裸仓库,也就是你在 .git/ 内部看到的样子。
至于 Working Directory ,需要你从仓库里签出才行。
ericls
2016-02-03 01:26:40 +08:00
git 还需要服务器么?我都是 ssh 连接的
webjin
2016-02-03 02:53:32 +08:00
我遇到过,明天发脚本你,推送成功,但是不显示文件是吧。
webjin
2016-02-03 02:58:07 +08:00
1.设置远程创库地址
# git remote add origin ssh://git@192.168.0.10/home/test/.git/ 或者 add 修改(set-url )
2.push 推送
# git push origin master 首次执行
# git push
3.然后在远程创库执行以下命令,才可以看到更新的内容
# git config --unset core.bare 首次执行
# git reset --hard
Neveroldmilk
2016-02-03 10:53:46 +08:00
应该是没有把远程目录的最新版本给 pull 下来。之后才能 commit ,最后才能 push 。
xuyifei
2016-02-03 11:15:23 +08:00
LioMore
2016-02-03 17:06:31 +08:00
请 checkout 出来
heaventear
2017-03-28 17:05:04 +08:00
如果是 github 的仓库,可以挂梯子,我用的是天路加速器,看他们官网的命令行加速器教程,可以提速几十倍, https://91tianlu.com/knowledgebase.php
Zz0Zz
2018-02-01 15:31:14 +08:00
我刚刚试了一下,要想同步 push 的文件,在服务器创建 project 时,不要创建裸仓库
#1 . 创建支持工作目录的远程仓库

## 远程服务器初始化仓库
git init <仓库名>
## 设置允许远程接收文件
git config receive.denyCurrentBranch ignore

#2. cd 仓库名 /.git ,在 hooks 文件夹中添加 post-receive 钩子文件(用于自动更新工作目录内容)
touch post-receive
vim post-receive
加入内容
WORK_TREE='../'
git --work-tree="${WORK_TREE}" reset --hard
然后保存

#2. chmod -R 777 post-receive (为该文件赋予权限)

然后你再 push 时就可以看到上面的文件了

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

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

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

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

© 2021 V2EX