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

新手git 问题:服务器端修改了文件,比如更新了sitemap.xml,如何让git知道更新过?

  •  
  •   elgoog · 2012-11-26 12:15:19 +08:00 · 5241 次点击
    这是一个创建于 4376 天前的主题,其中的信息可能已经有所发展或是发生改变。
    对git 不是很了解,写了个程序传到了服务器上,服务器端自己更新了sitemap,后面push的时候覆盖掉了已经更新了的sitemap,悲催。但是git pull的时候提示"already up-to-date"。

    请问有什么办法让服务端更新文件的时候通知git吗?谢谢~~
    第 1 条附言  ·  2012-11-26 13:04:34 +08:00
    不好意思,没描述清楚。
    我的想法是将整个网站纳入版本控制中,网站自己产生的更新也自动提交给git(比如wordpress升级这种和sitemap更新等这一类情况),然后我可以在本地pull下来。就像github一样,本地可以push给它,在github网站上编辑的内容也可以提交,本地可以pull下来。
    所以我的问题就是服务器端怎样自动commit。本人很菜,见笑~
    13 条回复    1970-01-01 08:00:00 +08:00
    anyforever
        1
    anyforever  
       2012-11-26 12:25:37 +08:00
    如果不是我没看明白的话,貌似你的顺序搞错了
    本地push到远程repo,服务器响应这个远程repo,更新文件,应该是这样。
    至于是自动响应还是手动,是另外一个问题了。
    binux
        2
    binux  
       2012-11-26 12:27:13 +08:00
    sitemap在git中吗?
    后面push,谁push?
    git pull是谁pull?
    这个场景git的作用?
    honk
        3
    honk  
       2012-11-26 12:41:20 +08:00
    這種情景適合 .gitignore
    guojikai
        4
    guojikai  
       2012-11-26 12:47:22 +08:00
    根本就是操作错误,这种错误不能兼容。先更新后提交,怎能先提交后更新呢?服务器端没有义务去通知客户端(试想一下有上万个客户端,这个开销有什么意义?)

    去服务端寻旧版本,把文件恢复吧。
    meta
        5
    meta  
       2012-11-26 12:48:34 +08:00
    git哪来的服务器端啊,如果要协作,往同一个地方push就是了,你看到每次都up to date,要么是有一边忘了push,要么是push到不同的branch中去了。
    alexrezit
        6
    alexrezit  
       2012-11-26 12:51:10 +08:00
    remote 端没 commit?
    哪有在 remote 端直接改文件的啊...
    reus
        7
    reus  
       2012-11-26 12:54:39 +08:00
    服务器那边也要先commit,然后本地再git pull
    如果想要服务器自动commit,那就在生成sitemap的时候一起commit
    elgoog
        8
    elgoog  
    OP
       2012-11-26 13:05:50 +08:00
    @binux
    @anyforever
    @guojikai
    不好意思,刚重新描述了一下..
    elgoog
        9
    elgoog  
    OP
       2012-11-26 13:06:34 +08:00
    @reus 嗯,就是需要服务器commit,但是不知道怎么弄..
    elgoog
        10
    elgoog  
    OP
       2012-11-26 13:08:00 +08:00
    @alexrezit 是网站程序自动改的..想把这些更改也给git管理
    timonwong
        11
    timonwong  
       2012-11-26 13:16:36 +08:00
    @elgoog
    我想你要 libgit2 http://libgit2.github.com/
    有PHP的binding.
    anyforever
        12
    anyforever  
       2012-11-26 13:32:26 +08:00   ❤️ 1
    你所描述的服务器端也是git的一个客户端,都clone一个中心库就行了。
    关于如何自动pull,你可以Google一下Git Hooks机制,这里有一些操作中的环节能响应你想做的,比如post-update
    pityonline
        13
    pityonline  
       2012-11-26 13:33:01 +08:00   ❤️ 1
    假设你的 wordpress 架设在 vps 上,你想跟踪 wordpress 目录的所有变更,应该 ssh 登录到 vps 上去跟踪 wordpress 目录中所有文件,再把这个仓库推送到一个 remote(github 不合适,因为免费用户只能创建公开的 repo),这样你就可以监视 worpdress 的变动或做手动管理了,即使你通过 wordpress 升级程序去更新主程序或 plugins,或在 wordpress 后台编辑了 theme 或其它文件,理论上来讲更新后的文件状态也可以由 git 跟踪到的,最好常用 git status 查看一下。
    以上动作都是在 vps 上完成的。如果你想在本地管理,可以通过 Dropbox 把 wordpress 目录同步至本地电脑,这样你就可以在本地管理了,如果网络好的话,你在本地编辑好的文件会立即自动同步到 vps 上,但一个明显的缺点就是由于网络原因,可能会产生一些冲突,需要手动解决一下。
    至于你所说的服务器端更新了文件通知 git,假设你按我第一段所说的,只要登录到 vps 上在 wordpress 目录内执行 git status 即可发现服务器上哪些文件有更新,但这些更新都是未提交的,提交还是要手动的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3135 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:45 · PVG 21:45 · LAX 05:45 · JFK 08:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.