Git工作stream程 – build立一个构build过程

免责声明:我一直在使用Git,但仍然觉得困惑。

我正在设置一个项目的构build过程,并遇到更新git存储库的问题。

  1. 我在服务器上创build了存储库,让我们说C:\ MyProject。
  2. 我使用SourceTree将计算机连接到存储库。 做一个拉,并得到我所有的代码,一切都是伟大的。
  3. 我去做一个提交,但得到一个错误说:“拒绝更新检出分支…默认情况下,更新非裸仓库中的当前分支被拒绝”
  4. 使用谷歌一点,我意识到服务器上的git存储库不应该有检查出主,所以我使用“离开本地分支”选项的Git GUI结帐。 这将服务器上的分支设置为HEAD。

现在是我困惑的部分(让我知道,如果我真的感到困惑,只是不知道它)。 什么是推荐的方式去更新服务器上的代码? 如果我在Git GUI中打开服务器存储库,则无法执行提取操作。 什么似乎工作是如果我结帐主,但实际上是什么build议? 如果是这样的话,那意味着每次更新后我都必须签出一个不同的分支,这样我才能继续按下我的工作计算机。

推荐到裸回购是一个最佳实践:参见“ git中裸共享存储的概念 ”,以及所有关于“裸”回购的内容 – 什么,为什么以及如何解决非裸动的问题 。

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

  • 创build一个Git仓库(你已经做到了)
  • 克隆,回购光秃秃的回购( git clone --bare yourProjectFolder yourProjectFolder.git
    .git扩展名是裸露的回购根文件夹的命名惯例)
  • 而不是推到裸露的回购:
    去你当地的回购,并input:

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

    • 改变目录(到您的非裸露的repo文件夹yourProjectFolder
    • unset GIT_DIR
    • git pull ../yourProjectFolder.git

请参阅“ 远程nodejs服务器永久部署 ”。

Interesting Posts