2011-07-28 35 views
2

首先,道歉,因爲我是git,ssh和Xcode的新手。另外,我是一個非常恐怖的命令行。Xcode 4 git:'移動'本地git項目到我們的遠程服務器

我們有一臺服務器運行客戶端連接ssh身份驗證拉/推代碼從/到。它在Xcode 4中對我使用git命令行設置的現有項目非常有用。使用Xcode 4克隆項目並推送提交非常簡單。

我感到困惑的是如何將我們的服務器設置爲開發人員使用Xcode 4創建的本地git項目(具有大量簽入歷史記錄)的起源/主控。我看到有一個隱藏的文件夾git的,所以我嘗試:

SCP -r git的[email protected]:在Xcode 4 MyProject.git

然後,我可以繼續克隆它從我們的服務器完美。我可以看到完整的登記歷史記錄。如果我嘗試推送更改,則會收到巨大的錯誤消息。

遠程:錯誤:拒絕以更新簽出分支:裁判/頭/主
遠程:錯誤:默認情況下,更新當前分支在非純倉庫
遠程:錯誤:被拒絕,因爲它將使索引和工作樹不一致
遠程:錯誤:與您推送的內容相同,並且需要'git reset --hard'匹配
remote:error:工作樹爲HEAD。遠程:錯誤:您可以將'receive.denyCurrentBranch'配置變量設置爲
remote:error:'忽略'或'警告'在遠程存儲庫中允許推入
remote:錯誤:其當前分支;然而,這是不建議,除非你
遠程:錯誤:安排來更新其工作樹,以匹配你在一些推
遠程:錯誤:其他方式。
遠程:錯誤:
遠程:錯誤:爲了壓制此消息,仍然保持默認的行爲,設置
遠程:錯誤:「receive.denyCurrentBranch」配置變量爲「拒絕」。 [snip]

我不知道如何正確地做到這一點,而不會丟失開發人員在其本地計算機上已經擁有的寶貴檢入歷史記錄。

有人能指出我失蹤的基本步驟或概念嗎?

謝謝!

回答

9

如果您想要push回購,默認情況下它會被禁止到push到當前檢出的分支。

爲了避免這種情況,中央倉庫(每個人都推動的倉庫)通常被創建爲bare倉庫,即它們只包含版本信息並且沒有檢出工作副本。這些回購協議按照慣例命名爲<repo-name>.git。您可以在git init

git init --bare myrepo.git 

創建使用--bare標誌的裸回購但問題是,你複製一個本地.git文件夾my.server.com而不是創建一個裸回購那裏。在.git/config,有回購是否裸露的信息。在工作副本中,bare爲false,此信息現在位於服務器上。

正確的方式來解決這將是

  1. 在服務器上創建一個裸露的回購協議(如上面寫的)
  2. 在你的工作副本添加此回購爲remote
    git remoteadd origin [email protected]:MyProject.git
  3. 將您當地的回購內容推送到origin
    git push--force --all origin
+1

非常感謝。你釘了它。 –

相關問題