2014-10-31 54 views
0

聲明:我一直在使用Git,但仍然覺得很困惑。Git工作流程 - 建立構建過程

我正在爲一個項目設置一個構建過程,並且遇到更新git存儲庫的問題。

  1. 我在服務器上創建了存儲庫,可以說C:\ MyProject。
  2. 我使用SourceTree將我的電腦連接到存儲庫。做一個拉,並獲得我所有的代碼,一切都很好。
  3. 我去做一個提交,但得到一個錯誤說:「拒絕更新檢出分支...默認情況下,更新非裸倉庫中的當前分支被拒絕」
  4. 使用谷歌一點,我意識到服務器上的git存儲庫不應該讓主人簽出,所以我使用「從本地分支中分離」選項使用Git GUI簽出。這將服務器上的分支設置爲HEAD。

現在是我困惑的部分(讓我知道如果我真的很困惑,只是不知道它)。推薦更新服務器上的代碼的方法是什麼?如果我在Git GUI中打開服務器存儲庫,則無法執行提取操作。什麼似乎工作是如果我結帳主,但實際上是什麼建議?如果是這樣,那麼這意味着我必須在每次更新後檢出一個不同的分支,以便我可以繼續按下我的工作計算機。

回答

4

這是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回購(你已經做了)
  • 克隆即回購裸露的回購協議(git clone --bare yourProjectFolder yourProjectFolder.git
    (該.git extention是命名約定式回購裸根文件夾)
  • 推裸回購代替:
    去您當地的回購,然後鍵入:

    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」。

+0

感謝您的幫助!裸回購似乎是主要問題。我甚至不知道掛鉤存在。 – Sentient 2014-11-03 23:48:46