2011-05-16 40 views
1

我在Github上有一個現有的Git存儲庫。推送到一個新的應用程序到現有的Git存儲庫

我想重新組織我的代碼,所以我開始了一個新項目,我們稱之爲NewApp。我通過調用git init將NewApp文件夾放入git存儲庫。

我已經發布了變化並付諸實踐。

我加入了資源庫

git remote add github [email protected]:myAccount/myRepo

我現在要推到下分支庫命名development。所以我用git push github development

這之後,我得到的錯誤錯誤:未能一些裁判推到[email protected]:myAccount/myRepo.git

所有我可以在互聯網上找到的解釋建議你首先必須從這個分支做了git pull。我不想這樣做,因爲它會給我完全不同的舊代碼。但無論如何我做了,然後改變了代碼,但它仍然不適合我。

這是怎麼回事。爲什麼不能只覆蓋特定分支中的當前內容?

回答

4

通過創建新的回購協議(git init),您實際上正在進行新的根提交,因此您無法推送到現有的回購協議。

A git pull不會解決任何問題,因爲仍然會有兩個根提交。

爲了您的重組,我寧願建議從現有的提交(意思是,克隆現有的回購和在該克隆的回購中創建分支)創建分支,而不是初始化一個全新的回購。

+0

提問者仍應該能夠推動任何歷史的分支,只是沒有一個共同的祖先可能會使合併更加困難。 – 2011-05-16 09:01:58

+0

@Mark:true(你的回答爲+1);但爲什麼OP應該使用一個沒有共同祖先的新回購? – VonC 2011-05-16 09:03:45

+1

絕對 - 我不知道爲什麼OP不克隆,並在這種情況下創建一個新的分支。 – 2011-05-16 09:09:29

2

我認爲錯誤failed to push some refs的產生是因爲:

git push github development 

...相當於:

git push github development:development 

...換句話說,推動當地分支機構development到遠程分支development 。由於如果遠程分支尚不存在,遠程分支將在推送中創建,我猜你的本地分支被稱爲master,並且沒有稱爲development的本地分支。假設你希望你的分支被當地稱爲development還有,你可以這樣做:

git checkout -b development 
git push -u github development 

(你只需要-u一次設置了本地development分支而在GitHub上的一個之間的關聯。)


更新:上面我建議你應該工作,但作爲VonC points out in his answer做本來克隆現有的存儲庫正確的事,創建基於主一個新的分支,然後提交您的新版本在那個分支上。這樣你就有了一些共同的歷史,這將(a)使git更容易合併,並且(b)更準確地表示項目的歷史。

相關問題