【问题标题】:Keep remote directory up to date using git使用 git 使远程目录保持最新
【发布时间】:2013-10-19 21:19:34
【问题描述】:

我已经建立了一个远程目录并在其中初始化了 .git。

我可以推送到这个 repo,但我需要它将项目拉入目录以模仿我本地 repo 的结构。

这是我需要运行接收后挂钩的地方吗?如何从目录中的本地.git中拉取项目文件?

感谢您的帮助。

【问题讨论】:

  • 如果本地目录结构与远程目录结构都包含在 git-initialized 目录中,它们有何不同?
  • @WillWilliams 当我推送到远程时,只有隐藏文件得到更新。我可以从workingdir/.git 克隆和拉取文件,但它不会自动在workingdir 中构建项目

标签: git


【解决方案1】:

使用 git push 可以让您将 git 存储库中的更新推送到不同的远程。

当您推送到远程时,您所做的就是将更改发送到 git 存储库。如果您希望更改目录结构,则需要以某种方式检查最新版本的代码。

您可以使用接收后挂钩来执行此操作。您需要快进远程分支。请注意,在发布接收挂钩完成之前,客户端不会断开连接。

以下是您要查找的内容的快速概览:http://toroid.org/ams/git-website-howto

查看此 SO 帖子:Git Post-Receive Hook for Website Staging

这个网站似乎也很有帮助:http://githooks.com/

【讨论】:

  • 这个想法是我推送到删除,它更新项目文件,然后重新启动该过程。我已经想出重新启动文件更改的过程。我只需要在收到推送后从 .git 中提取文件。这有意义吗?谢谢!
  • 我明白你现在要做什么了。文件没有更新,因为远程只是接收 git 中的更改 - 您希望远程签出或提取最新的更改。
【解决方案2】:

.git/hooks 中创建一个名为post-receive 的挂钩。该文件应包含以下内容...

#!/bin/sh
GIT_WORK_TREE=/path/to/where/you/want/working/files git checkout -f

我在尝试使用不是 --bare 的 git 存储库时遇到了一些问题(设置时使用 git init --bare,然后将工作目录放在其他地方)

示例:

mkdir yourbarerepo.git
cd yourbarerepo.git
git init --bare
cd hooks
touch post-receive
nano post-recieve
  #paste in contents above
  #make sure the path where you want the working files to go is already created

【讨论】:

    猜你喜欢
    • 2010-09-05
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    相关资源
    最近更新 更多