Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
Ncer
V2EX  ›  Linux

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

  •  
  •   Ncer · Feb 2, 2016 · 7567 views
    This topic created in 3930 days ago, the information mentioned may be changed or developed.
    按照教程搭了一个 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

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

    - -
    Ncer
    Ncer
    OP
    Feb 3, 2016
    10
    @publicAdmin
    是的,我的意思是说平时在 github 上只用过简单的 commit push poll ,
    没有深入了解原理
    moliliang
    moliliang
    Feb 3, 2016
    11
    本来就没有~
    msg7086
    msg7086
    Feb 3, 2016
    12
    git --bare init 建立的是裸仓库,也就是你在 .git/ 内部看到的样子。
    至于 Working Directory ,需要你从仓库里签出才行。
    ericls
    ericls
    Feb 3, 2016 via iPhone
    13
    git 还需要服务器么?我都是 ssh 连接的
    webjin
    webjin
    Feb 3, 2016 via Android
    14
    我遇到过,明天发脚本你,推送成功,但是不显示文件是吧。
    webjin
    webjin
    Feb 3, 2016
    15
    1.设置远程创库地址
    # git remote add origin ssh://[email protected]/home/test/.git/ 或者 add 修改(set-url )
    2.push 推送
    # git push origin master 首次执行
    # git push
    3.然后在远程创库执行以下命令,才可以看到更新的内容
    # git config --unset core.bare 首次执行
    # git reset --hard
    Neveroldmilk
    Neveroldmilk
    Feb 3, 2016
    16
    应该是没有把远程目录的最新版本给 pull 下来。之后才能 commit ,最后才能 push 。
    xuyifei
    xuyifei
    Feb 3, 2016
    17
    LioMore
    LioMore
    Feb 3, 2016 via iPhone
    18
    请 checkout 出来
    heaventear
    heaventear
    Mar 28, 2017
    19
    如果是 github 的仓库,可以挂梯子,我用的是天路加速器,看他们官网的命令行加速器教程,可以提速几十倍, https://91tianlu.com/knowledgebase.php
    Zz0Zz
    Zz0Zz
    Feb 1, 2018
    20
    我刚刚试了一下,要想同步 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 时就可以看到上面的文件了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1847 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 01:10 · PVG 09:10 · LAX 17:10 · JFK 20:10
    ♥ Do have faith in what you're doing.