2011-05-02 77 views
2

這是我的設置:不能從一個裸git回購拉到另一個

我有一個'主'git存儲庫與託管服務。所有的代碼都必須在這裏結束。稱這個'主'。

由於權限(希望限制用於託管服務的SSH密鑰的數量),並且因爲我最初開始編碼指向另一個repo,所以我在VPS上有一個裸存儲庫。稱這個'VPS'。

我在本地開發工作,推送到VPS,定期登錄VPS並推送給主。

我得到的問題是,我通過從主站複製來部署我的網站。我做了一些改變,並將它們推回給主人。所以現在我需要在VPS上執行git pull,所以它會從主控端獲得最新的代碼。不幸的是,當我嘗試這個時,git告訴我,我不能用裸倉庫來做這件事。爲了使事情更加複雜,我沒有意識到這一點,所以我將一些新的代碼從開發推向VPS,所以VPS在部分日誌中缺少一些提交(即不是所有代碼中最近提交的提交)。

我該如何解決這個問題,以及如何設置這些東西,以便我可以從VPS推拉?

感謝

- 編輯 -

OK,所以我需要能夠從VPS最後3個提交合併到主的新克隆。我該如何做到這一點,我應該如何在git中配置存儲庫?

+0

從已部署的網站倉庫中的主服務器和VPS中獲取合併信息,然後將其推送到主服務器/ VPS。 – Artefact2 2011-05-02 20:30:54

+0

@ Artefact2 - 部署的站點只能訪問主站,而不幸的是不能訪問VPS。 – John 2011-05-02 20:35:57

回答

1

如果您必須執行合併(或cherrypick,可能涉及合併),則需要在不是裸露的存儲庫上執行合併。

你可以在你的本地開發機器上做到這一點。製作Master和VPS遙控器,從兩者中獲取,並將它們合併到本地開發主分支中。然後將此分支推送到VPS,然後將其從VPS推送到主設備。這兩種推動應該是快進和工作的(如果沒有人同時推動對VPS或主人的任何改變,則在這種情況下再次合併)。

另一種選擇是將VPS從裸露轉換爲正常並在那裏進行合併。您可以通過重新創建VPS(不使用--bare開關的主從克隆)來完成此操作。如果你在同一個地方重新創建它,本地開發的遠程設置仍然會指向它。

+0

我這樣做的第二種方式,但它不會工作,所以我最終使用git diff和補丁。因爲我失去了一些元數據,但不是理想的世界末日。謝謝。 – John 2011-05-02 21:11:26

3

git pull相當於git fetch + git merge

合併顯然需要工作副本(爲了能夠解決衝突,如果有的話)。

由於在兩個裸存儲庫之間移動東西時實際上不想合併任何東西(合併應該在您自己的克隆的工作副本中完成),並且您只想獲取分支的新值,您應該直接調用git fetch

+0

嗯......Git fetch工作在VPS上,但我需要將我直接推送給主控的變更合併,因爲它並沒有將這些變更引入,因爲我已經承諾VPS。我在其他地方克隆了主人。我可以選擇最近3次提交VPS到這個新回購嗎?這就是我需要做的...... – John 2011-05-02 20:31:44

1

我不明白你的問題。您可以訪問VPS和主控。你可以推和拉兩者。您可以從兩者中拉出,合併這些更改,然後將結果推送到兩者。

+0

我不知道能夠從兩者中拉/推。所以我從proxy.git裸回購克隆,cd到非純裸克隆,從master.git裸回購拉(拉也做了合併),然後推送到proxy.git。最後,我將cd.gd轉換爲proxy.git,然後推送給master.git。 <現在兩個裸回購方式同步>。然後我通過從master.git和proxy.git中克隆測試。目錄是否使用'kompare'與內容進行比較,內容是否相同。 - >聽起來像設置兩個遙控器會更容易? – 2015-07-22 13:41:35