V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
lijinma
V2EX  ›  git

求助 git push 成功后,是否可以直接更新服务器上的文件?

  •  
  •   lijinma · 2014-04-18 09:58:34 +08:00 · 6397 次点击
    这是一个创建于 3890 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我现在的操作是:

    (1)git push ...
    (2)登录remote服务器执行 git reset --hard 来更新remote的文件。

    问题:

    是否可以直接在push成功后,更新remote的文件?
    16 条回复    1970-01-01 08:00:00 +08:00
    romoo
        1
    romoo  
       2014-04-18 09:59:57 +08:00   ❤️ 1
    Git hooks
    lijinma
        2
    lijinma  
    OP
       2014-04-18 10:02:44 +08:00
    @romoo 恩 是不是只能在服务器端写hooks? 没有指令来操作吗?

    已感谢。
    tczzjin
        3
    tczzjin  
       2014-04-18 13:49:37 +08:00
    hooks非常方便的
    simapple
        4
    simapple  
       2014-04-18 13:53:53 +08:00   ❤️ 2
    推荐给你看这个,用git 发布站点 : http://toroid.org/ams/git-website-howto
    lijinma
        5
    lijinma  
    OP
       2014-04-18 14:17:40 +08:00
    @tczzjin
    @simapple

    多谢你的例子,里面的hooks确实非常方便啊。

    真好!!!
    standin000
        6
    standin000  
       2014-04-18 16:26:25 +08:00
    为啥要更新remote的文件?
    lijinma
        7
    lijinma  
    OP
       2014-04-18 16:27:33 +08:00
    @standin000

    比如有一个新html添加,push成功后,html不会自动添加,必须执行 git reset --hard

    或者 git checkout
    lvwzhen
        8
    lvwzhen  
       2014-04-18 17:13:16 +08:00
    guoqiao
        9
    guoqiao  
       2014-04-18 17:13:22 +08:00   ❤️ 1
    @lijinma 没看懂, 为何不是git pull?
    我一般push后用fabric更新服务器.
    dorentus
        10
    dorentus  
       2014-04-18 17:21:38 +08:00   ❤️ 1
    楼主是直接 push 到 remote 服务器上的
    然后 remote server 上的 repo 不是 bare repo

    ---
    更常见的用法似乎是:

    push 到 remote server 上的一个 bare repo
    然后在 bare repo 里面设置 post-receive hook 去让位于另一处的 non-bare repo 从这个 bare repo pull 最新的改动。

    区别就在于中间多了个 bare repo,和实际用的 non-bare repo 分开;因为 bare repo 没有工作区,不会因人为的或者运行时自动产生的改动造成 push 或者 pull 失败……
    nicai000
        11
    nicai000  
       2014-04-18 17:23:35 +08:00   ❤️ 1
    每次默认更新的repo说明不是用于开发更改的, 为啥不用bare repo?
    maga
        12
    maga  
       2014-04-18 19:50:29 +08:00 via iPhone
    Git正遇到情景,太好了。另外,如果我只要repo的一部分目录,不知道有没有好的方式
    lijinma
        13
    lijinma  
    OP
       2014-04-19 09:46:11 +08:00
    @dorentus
    @nicai000

    -。- 果然我头发长见识短了。
    现在已经改成 bare repo了。

    感谢大家的回复,已经发送感谢。
    lijinma
        14
    lijinma  
    OP
       2014-04-19 09:49:53 +08:00
    @maga 你的场景肯定是:

    bare repo:

    post-receive的hook,

    使用 git pull 或者 git check 拿到所有的文件后,
    然后删除不需要的文件或文件夹就可以了吧。
    maga
        15
    maga  
       2014-04-19 16:42:47 +08:00 via iPhone
    @lijinma 谢谢兄弟,了解了下git hook,是简单好用的东西
    standin000
        16
    standin000  
       2014-04-19 18:17:22 +08:00
    @dorentus 说得很清楚了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5497 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:55 · PVG 09:55 · LAX 17:55 · JFK 20:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.