2013-02-28 206 views
0

我想了解如何使用Git進行本地版本控制。我使用Xcode作爲我的IDE。當我發現有3000個未分離的更改時,我試圖添加最新的更改。我在不知不覺中上演了他們。然後我進入我的項目根目錄,在裏面找到同一個目錄,裏面有相同的文件,等等。我刪除了它,並且由於演示文件丟失,存儲庫進入了損壞狀態。我實際上應該做什麼?這怎麼會發生?Git倉庫損壞

+1

即使在本地使用時,最好有兩個副本,即推送到的「上游」存儲庫和克隆你在哪裏做實際的工作和提交。這樣,如果事情失靈,只需再次克隆「上游」並繼續從最後推送。你不能真正地破壞上游的副本,所以即使你推壞東西,舊版本仍然存在。 – hyde 2013-02-28 05:42:16

+0

你怎麼做的..只是告訴我什麼谷歌... :) – 2013-02-28 05:45:07

回答

3

如果您刪除.git文件夾,則刪除了實際的本地存儲庫克隆。打撈你的資源(希望你有一個好的版本),並從頭開始創建一個新的資源庫。


如果你想創建一個備份庫中,當你已經有一個,你做的工作,這也許是最簡單的方法,確保你有你想保留(bash的命令沒有提交的修改後,但你,即使你不使用bash的想法,我敢肯定):

cd work/myproject 
cd ../.. 
mkdir backup-upstream 
cd backup-upstream 
git clone --no-checkout ../work/myproject 

然後你再也不需要再直接觸摸備份。現在,你可以設置你當前的工作/項目,以遵循,但它是最簡單和最容易出錯的只是做一個新的克隆,從上述持續關:

cd ../work 
mv myproject myproject-backup 
git clone ../backup-upstream/myproject 
cd myproject 

現在,它可以啓發檢查出的差異這些文件,看看有什麼實際改變:

cat .git/config 
cat ../myproject-backup/.git/config 

然後你work/myproject下照常工作,當你想創建備份,以防git push。 backup-upstream下的克隆應該被認爲是任何遠程上游repo,例如github,它實際上是從本地文件系統訪問並不重要。請注意,如果您創建新的分支機構,則需要單獨推送它們,請參閱:How to copy a local Git branch to a remote repo

+1

yep ive做到了這一點。但我失去了我的一個分支。 – 2013-02-28 06:09:12

+0

是啊,目前沒有簽出的所有版本都存儲在'.git' ... – hyde 2013-02-28 06:46:20

+0

,但如何在地球上可以遞歸文件夾的事情發生......它似乎很難甚至有意地做... – 2013-02-28 06:58:06