【问题标题】:GIT - Updating remote repository 'working files' [duplicate]GIT - 更新远程存储库“工作文件”[重复]
【发布时间】:2016-01-26 02:03:36
【问题描述】:

我们刚刚开始在多开发者网站上使用 git 进行源代码控制。

目前,我们有一个裸露的远程存储库,我们都可以克隆并开发它。美好的。

但我们必须获取远程的另一个克隆,以便为我们提供实际上传到网络服务器的源代码。

如果我们的远程存储库不是裸露的,那么它将包含工作文件——就像我们的克隆一样。

据我了解,这些将是从创建存储库时开始的。
我无法解决的是如何从远程存储库本身更新这些“工作文件”,因为这样我们就可以直接运行它。

我希望这会引起轰动。

我要么错过了这一切是如何工作的,要么是我如何使用它,但我可以看到什么!

【问题讨论】:

    标签: git


    【解决方案1】:

    我无法解决的是如何从远程存储库本身更新这些“工作文件”,因为这样我们就可以直接针对它运行。

    我要么错过了这一切是如何工作的,要么是我如何使用它,但我可以看到什么!

    不,你明白了。您无法远程更新 Git 存储库。

    希望使用 Git 将更改直接推送到生产环境是一种常见的愿望。你不能,你也不想。为什么?考虑一下如果生产副本有未提交的更改或存在合并问题会发生什么?生产中断。

    相反,生产克隆需要从生产服务器更新。因为git pull 可能涉及合并,如果发生冲突可能会破坏生产,理想情况下,而不是拉它应该git fetch 然后签出标记的版本。这保证了没有合并冲突,并且您确切地知道您得到了什么。

    一般来说,不要尝试将 Git 用作发布管理器。它可以是发布管理器的一部分,但它本身并不能很好地工作。

    【讨论】:

      【解决方案2】:

      作为第一步,您可以在远程重新创建您的存储库或直接使其非裸露,如this answer。一旦你有一个非裸存储库,你可以创建一个更新后或提交后挂钩来运行git reset --hard HEAD。话虽如此,这是一个坏主意。在决定继续之前,您应该阅读以下帖子:Git: how to make remote directory update when pushed to?

      【讨论】:

        【解决方案3】:

        什么是裸仓库

        如上所述,裸存储库在其根目录中包含任何常规文件。 取而代之的是.git 文件夹内容。


        如何更新代码文件

        我无法解决的是如何从远程存储库本身更新这些“工作文件”,因为这样我们就可以直接针对它运行。

        如果您想处理文件并修改它们,您必须使用 git clone 克隆存储库。
        在您的服务器上运行git init --bare 是不够的,您需要设置一些transfer protocol 以便与服务器“对话”。

        一旦您有了 repo 和传输协议,您就可以简单地克隆项目,修改其内容并提交并推回原始 repo。

        【讨论】:

          【解决方案4】:

          您的远程存储库应保持为裸存储库。服务器上的工作文件没有意义。没有开发人员直接在该机器上工作。是的,在 git 中修改远程存储库有更多步骤,这是设计使然。为方便起见,请勿尝试跳过流程中的步骤。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-19
            • 2013-07-16
            • 2018-07-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多