2013-09-28 51 views
1

我有一個私人存儲庫github(說「ProjectX」)。項目需求中途改變,這意味着代碼必須重寫。我不想失去已經在「ProjectX」上取得的進展,所以我做了以下操作:重命名回購和推新代碼

  1. 在本地存儲庫中將「ProjectX」更名爲「ProjectX_advanced」。
  2. 改名爲遠程起源,像這樣:

git remote rm origin
git remote add origin [email protected]:user/ProjectX_advanced.git
也改名GitHub上的項目。
這是成功的。執行在終端上git remote -v結果如下:

origin [email protected]:user/ProjectX_advanced.git (fetch) 
origin [email protected]:user/ProjectX_advanced.git (push) 

我也能推修改以上信息庫。
3.在github上創建一個名爲「ProjectX」的新回購。
4.在我的本地存儲庫中創建一個名爲「ProjectX」的新項目。
5.它初始化混帳,像這樣:
git init
git add .
git commit -m "First commit" .

6.增加了一個新的遠程起源,像這樣:
git remote add origin [email protected]:user/ProjectX.git
如果我現在在命令行上做git remote -v,我得到正確的遠程位置。
7.出現問題時,我現在嘗試在當地的回購將更改到GitHub庫有:
git push origin master
錯誤消息::看到

To [email protected]:user/ProjectX.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:user/ProjectX.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 

我已經看到了一些以前的問題herehere和其他一些表明我需要執行git pull併合並,然後才能推送這些更改。
我的問題:
1.如果我做了git pull,我的新「ProjectX」將被我不需要的代碼覆蓋。我如何解決它?
2.我已將所有遙控器重新命名(git remote -v的輸出如預期)。我錯過了重命名一些遙控器?
3.我該如何解決這個問題?

回答

1

我跟着@ VonC的建議,並克隆ProjectX到不同的本地目錄,如下所示:
cd destDir (directory where a clone of ProjectX should be created)
git clone [email protected]:user/ProjectX.git

這創造了克隆,並表明projectX創建真的很空,甚至在GitHub上。 ProjectX的內容是一個README.md文件和gitignore文件。將這些更改拉到存儲庫中並沒有太大的區別,因爲Readme.md會被添加並且gitignore會發生變化。拉動如下所示的更改:
git pull origin master在本地ProjectX目錄中更新了上述兩個文件。然後我可以使用git push origin master推送更改。

+1

好的反饋,補充我自己的答案。 +1 – VonC

1

您的新ProjectX回購GitHub上應該是空的,但嘗試克隆它,並開始從克隆工作(而不是在本地初始化它,並推到GitHub的新回購)。

這樣,您可以在克隆期間檢查新的ProjectX回購確實是空的。
......可能並非如此!

OP Sriram的答案顯示GitHub在回購初始化過程中由GitHub創建了一個README.md


另外,正如我在「How do I rename a repository on GitHub?」,提到自2013年5月,當您重命名在GitHub上回購:

我們會爲以前的倉庫地點的所有請求自動重定向到他們的新家園在這種情況下。

這就是在這裏可能會發生的情況,並且您的推送可能會在(重命名)ProjectX_advanced中結束。
這應該很快解決,當GitHub意識到有一個新的回購舊名稱ProjectX,並刪除重定向到ProjectX_advanced

+0

謝謝你的建議。從GitHub克隆回購確實表明它是一個空的回購。這意味着'git pull'請求在ProjectX的本地副本中不會有太大變化。我發佈了一個答案,以顯示對我有用的東西。謝謝您的幫助! – Sriram