Git工作流-设置构建过程



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

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

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

现在是我感到困惑的部分(让我知道我之前是否真的感到困惑,只是不知道)。在服务器上更新代码的建议方法是什么?如果我在GitGUI中打开服务器存储库,就没有进行提取的选项。如果我是结账大师,似乎有效,但这真的是推荐的吗?如果是的话,那就意味着我必须在每次更新后签出一个不同的分支,这样我才能继续在我的工作电脑上推送。

推送到裸repo是一种最佳实践:请参阅"git中裸共享存储库的概念"和所有关于"裸"repo的内容——什么、为什么以及如何修复非裸推送。

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

  • 创建一个Git回购(你已经做了)
  • 回购裸回购的克隆(git clone --bare yourProjectFolder yourProjectFolder.git
    .git扩展名是裸存储根文件夹的命名约定)
  • 转而推动裸回购:
    转到您的本地回购,然后键入:

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

    • 更改目录(到非裸机repo文件夹yourProjectFolder
    • unset GIT_DIR
    • git pull ../yourProjectFolder.git

请参阅"Remote nodejs server deployment with forever"。

最新更新