2015-02-09 185 views
0

這個問題可能已經被問到,但搜索後我找不到我在找什麼。使git克隆自己的存儲庫

我創建了一個項目,並把它推到github前一段時間,然後決定將它用作新項目的一種鍋爐板。所以我克隆到我的桌面,然後完全重新設計它。項目結束後,我決定在github上創建自己的回購並嘗試推出它。然而,這在我重新設計的項目恢復到原始狀態時結束了。我可以通過在我的所有文件(LOL)上按CTRL Z來更正此問題。 我需要找到一種方法來完全分開項目。當我嘗試將原始文件推送到git集線器時,出現以下錯誤:

「更新被拒絕是因爲遠程包含您本地沒有的工作,通常是由另一個存儲庫將 推向相同ref。在再次推送之前,您可能需要先集成遠程更改 (例如'git pull ...')。「

爲了澄清,我不想將兩個項目合併在一起,或者最終刪除其中一個。如果有可能,我想找到一種方法使自己的克隆項目,然後糾正上述原始項目的錯誤。

回答

3

假設您的樣板爲[email protected]:foo/boilerplate.git,並且您希望這是您的新項目[email protected]:foo/project.git的基礎。

在github網站上,創建一個名爲project的空存儲庫。

將您的樣板回購克隆到一個名爲project的新目錄中。

git clone [email protected]:foo/boilerplate.git project 

Git記住遠程地址,所以它可以從那裏默認推/拉。但你不想這樣做:相反,從現在開始,你想git push推到github上的project.git回購,而不是boilerplate.git回購。 git remote set-url是您如何告訴git project.git是您的新來源(,默認的推拉遙控器)。

cd project 
git remote set-url origin [email protected]:foo/project.git 

現在,git push會推到project.git回購。

可以選擇添加樣板作爲一個單獨的遙控器(但不是origin,這樣你就不會意外使用它):

git remote add boilerplate [email protected]:foo/boilerplate.git 

現在,當您更新的樣板,您可以合併這些變化到你的項目也是如此。 (這可以很好地工作,如果樣板文件往往不會發生很大的變化在project回購。)

git pull boilerplate master 

要回滾boilerplate.git回購到您它發散點,你只需要push -f 。方法有兩種:

  1. 如果您還有從你無意中按下東西github上之前樣板回購的本地副本,剛回到那裏並運行git push -f。這會從github上的樣板庫回收中刪除「你本地沒有的工作」 - 但你現在已經在單獨的回購中獲得了這些東西,對吧? (在做git push -f之前你應該至少考慮兩次,Git試圖幫助你避免意外刪除東西,不要意外刪除東西!)

  2. 克隆模板。使用git log來查找您希望保留的提交,例如abc1234。通過運行git push -f origin abc1234:master將github repo的「主」分支重置回該提交。

要查看原點指向哪裏(以及您有哪些其他遙控器),請運行git remote -v

+0

這很完美。謝謝。 – 2015-02-16 21:47:29