2013-02-03 422 views
3

我有一個iOS項目設置在github上,過去幾天我開始意識到我需要重構我的大部分代碼。我構建的項目沒有遵守MVC的許多基礎知識,現在想回去修復一切。Github,推新項目代替舊項目

主要問題是該項目足夠大,重構將是一個巨大的痛苦。 有無論如何,我可以開始一個新的項目,建立它到當前位置的地方(顯然有一些主要的設計更改),並把它推到github到相同的分支,而不是原來的項目?如果這不清楚,請讓我知道。

+0

您是否希望保留舊存儲庫的歷史記錄,並僅僅(基本上)替換其當前內容? – KevinH

+0

是的,基本上就像我做了一個重大的重構,但實際上只是重新啓動。 – Firo

回答

8

考慮到您希望保留舊的歷史記錄,我會擴展給定的答案。在這種情況下,您不想開始新的回購;你只是想「處理」舊數據,清除舊數據並添加新數據。您可以通過以下步驟完成此操作:

  1. cd進入項目目錄的根目錄。
  2. 刪除您不希望從文件系統中獲得的所有內容。注意離開.git /文件夾。這是您的存儲庫以前的歷史記錄。
  3. 添加你想要的任何新東西(新的Xcode項目,目錄結構等)。
  4. 當你準備好提交時,git status會顯示你相當混亂(其大小取決於你曾經有多少文件)刪除和添加。沒關係,這是你對所有這些條目進行廣泛刷新的地方,與git add --all .。這將在您的回購,刪除,新增加,所有這一切中進行處理。
  5. git commit -m "My new beginning"
  6. git push origin myBranch --force

瞧!您的存儲庫已完全製作完成,並保留了以前的歷史記錄。

+0

謝謝,我認爲這就是我需要知道的一切! – Firo

0

您可以在GitHub上,在你的.git/config中創建一個新項目,將URL更改爲新的回購

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:[yourname]/[yournewrepo] 
2

可以。只需創建您的新項目,並將以下命令輸入命令行界面(Windows中的cmd,linux中的終端)。

cd /path/to/project 
git remote add origin [email protected]:username/repo.git 
git push origin master --force 

這應該做到這一點。

+0

所以只是爲了驗證之前,我經歷了這一點。這將保留我當前的所有git信息(包括提交),只需全面推送新項目來代替當前的主服務器? – Firo

+1

作爲警告,這會在GitHub倉庫中抹去歷史記錄。 –

+0

對不起,我很早就錯過了這個問題。是的,它會清除GitHub上的歷史記錄,但是如果您將舊的.git文件夾(如接受的答案記錄)複製到此新文件夾中,則可以保留您的歷史記錄。 – Demortes

0

我發現最簡單的方法是將.git文件/文件夾複製到新項目中。