【问题标题】:Git workflow - Setting up a build processGit 工作流程 - 设置构建过程
【发布时间】:2014-12-28 08:45:32
【问题描述】:

免责声明:我使用 Git 已经有一段时间了,但仍然觉得它令人困惑。

我正在为项目设置构建过程,但在更新 git 存储库时遇到问题。

  1. 我在服务器上创建了存储库,比如说 C:\MyProject。
  2. 我使用 SourceTree 将我的计算机连接到存储库。拉一下并获取我所有的代码,到目前为止一切都很好。
  3. 我去提交但收到错误消息:“拒绝更新签出的分支...默认情况下,拒绝更新非裸存储库中的当前分支”
  4. 稍微使用谷歌,我意识到服务器上的 git 存储库不应该有 master 签出,所以我使用 Git GUI checkout 并使用“从本地分支分离”选项。这会将服务器上的分支设置为 HEAD。

现在是我感到困惑的部分(如果我之前真的感到困惑并且不知道,请告诉我)。更新服务器上的代码的推荐方法是什么?如果我在 Git GUI 中打开服务器存储库,则无法进行提取。如果我结帐大师似乎可行,但这实际上是推荐的吗?如果是这样,那意味着我必须在每次更新后签出不同的分支,以便我可以继续在我的工作计算机上进行推送。

【问题讨论】:

    标签: git build-process


    【解决方案1】:

    最佳做法是push to a bare repo:请参阅“concept of bare shared repository in git”和all about "bare" repos -- what, why, and how to fix a non-bare push

    这意味着在您的服务器上,您需要:

    • 创建一个 Git 存储库(您已经这样做了)
    • 克隆那个 repo 一个裸 repo (git clone --bare yourProjectFolder yourProjectFolder.git)
      .git 扩展名是裸仓库根文件夹的命名约定)
    • 改为推送到那个裸仓库:
      转到您的本地仓库,然后输入:

      git remote set-url origin /url/repo/repo/yourProjectFolder.git
      
    • 在裸仓库中添加一个钩子(在服务器上,yourProjectFolder.git/hooks/post-receive),您可以在其中

      • 更改目录(到您的非裸仓库文件夹yourProjectFolder
      • unset GIT_DIR
      • git pull ../yourProjectFolder.git

    在“Remote nodejs server deployment with forever”查看更多信息。

    【讨论】:

    • 感谢您的帮助!裸回购似乎是主要问题。我什至不知道存在钩子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2013-12-26
    • 2017-06-09
    • 2010-10-25
    • 2012-03-13
    • 2013-01-20
    相关资源
    最近更新 更多