V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Ncer
V2EX  ›  Linux

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

  •  
  •   Ncer · 2016-02-02 23:41:31 +08:00 · 6466 次点击
    这是一个创建于 3216 天前的主题,其中的信息可能已经有所发展或是发生改变。
    按照教程搭了一个 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 条回复    2018-02-01 15:31:14 +08:00
    pagxir
        1
    pagxir  
       2016-02-02 23:51:42 +08:00   ❤️ 1
    已经成功,只是你不会用分布式管理工具而已。
    Ncer
        2
    Ncer  
    OP
       2016-02-02 23:56:57 +08:00
    @pagxir 不好意思,以前只用过 github ,还是第一次用这个
    不只能否指教?
    int64ago
        3
    int64ago  
       2016-02-02 23:58:14 +08:00   ❤️ 1
    @Ncer 其实只是把 .git/ 下的文件 push 了,你有必要完整看一遍: https://git-scm.com/book/en/v2
    pagxir
        4
    pagxir  
       2016-02-02 23:58:58 +08:00
    你重新在另外一个文件夹 clone 一遍就看到新文件了。如果已经 clone 过的,请使用 git fetch && git merge/rebase origin/master
    fan123199
        5
    fan123199  
       2016-02-03 00:00:08 +08:00 via Android   ❤️ 1
    服务器上是看不到文件的
    fan123199
        6
    fan123199  
       2016-02-03 00:01:06 +08:00 via Android
    你可以 clone 下来看,或者 checkout 文件一个个看
    Ncer
        7
    Ncer  
    OP
       2016-02-03 00:01:23 +08:00
    @int64ago @pagxir @fan123199
    哦哦哦,懂了!是我基本功不扎实!
    pagxir
        8
    pagxir  
       2016-02-03 00:02:29 +08:00
    1 、你件的仓库是 bare , 所以服务器根本不会检出 工作区。
    2 、即使你的仓库不是 bare ,服务器工作区也不会因为你执行 push 而更新,仍然需要你自己执行 git rebase/merge.
    publicAdmin
        9
    publicAdmin  
       2016-02-03 00:04:41 +08:00   ❤️ 2
    @Ncer github 我理解的是 git 的仓库 web 控制台,而实际根本也是用的 git 工具..
    我没理解 github 和 git 有什么不同....(其他周边另记)
    个人觉得诸如此类工具性质的东西,没比较花太多时间研究
    安利楼主一个可以迅速搭建的私有 git 库
    @Unknwon 开发的 gogit https://gogs.io/
    楼主也可以参考下 github 上 gogs 的 start 数

    - -
    Ncer
        10
    Ncer  
    OP
       2016-02-03 00:10:45 +08:00
    @publicAdmin
    是的,我的意思是说平时在 github 上只用过简单的 commit push poll ,
    没有深入了解原理
    moliliang
        11
    moliliang  
       2016-02-03 00:23:48 +08:00
    本来就没有~
    msg7086
        12
    msg7086  
       2016-02-03 01:16:41 +08:00
    git --bare init 建立的是裸仓库,也就是你在 .git/ 内部看到的样子。
    至于 Working Directory ,需要你从仓库里签出才行。
    ericls
        13
    ericls  
       2016-02-03 01:26:40 +08:00 via iPhone
    git 还需要服务器么?我都是 ssh 连接的
    webjin
        14
    webjin  
       2016-02-03 02:53:32 +08:00 via Android
    我遇到过,明天发脚本你,推送成功,但是不显示文件是吧。
    webjin
        15
    webjin  
       2016-02-03 02:58:07 +08:00
    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
        16
    Neveroldmilk  
       2016-02-03 10:53:46 +08:00
    应该是没有把远程目录的最新版本给 pull 下来。之后才能 commit ,最后才能 push 。
    xuyifei
        17
    xuyifei  
       2016-02-03 11:15:23 +08:00
    LioMore
        18
    LioMore  
       2016-02-03 17:06:31 +08:00 via iPhone
    请 checkout 出来
    heaventear
        19
    heaventear  
       2017-03-28 17:05:04 +08:00
    如果是 github 的仓库,可以挂梯子,我用的是天路加速器,看他们官网的命令行加速器教程,可以提速几十倍, https://91tianlu.com/knowledgebase.php
    Zz0Zz
        20
    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 时就可以看到上面的文件了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2656 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:18 · PVG 18:18 · LAX 02:18 · JFK 05:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.