2012-05-06 137 views
0

我剛剛打破了我的代碼庫。我想回滾到最後一次提交,但我想首先保存已損壞的版本,以便稍後進行分析。這種情況下最好的課程是什麼?Git保存並恢復

(我還沒有真正嘗試任何事情,只是尋找一些手工holding-這是一個漫長的一天,我不喜歡這樣擰起來..)

回答

5

有幾件事情,你可以做:

最有可能的最好的辦法是創建一個單獨的分支來提交這個破碎的代碼,並提交到該分支。

git checkout -b my-broken-branch # creates a new branch called my-broken-branch 
# commit as usual... 
git checkout - # return to the last branch you were on 

當你想回到那個代碼,做一個git checkout my-broken-branch變化勝過那個分支。


,你可以做一個快速的事是git stash,這將節省你的工作,你可以稍後重新申請:

git stash 

如果你想獲得這些更改回來,你可以做一個git stash apply這將應用您隱藏的最後更改(但將信息保留在存儲列表中)。

正如Andrew在評論中提到的那樣,您還可以執行git stash pop,這將應用最少的存儲更改並將其從存儲列表中刪除。

你可以做更多的事情,因爲你可以做多個窗口並有選擇地將它們應用回來。

這裏有一個更詳細的解釋,當你想獲得更深入的積攢:http://gitready.com/beginner/2009/01/10/stashing-your-changes.html

+0

注意,通常'git的藏匿前pop'可以比'apply'更有用,因爲它可以從藏品列表中刪除藏品(如果它應用乾淨)。這樣可以更輕鬆地保持隱藏索引變得臃腫。 –

+0

@AndrewMarshall - 真實,真實 - 我不太確定如果這已經成爲Yarin的信息超載,我應該拋出多少信息。 – birryree

+0

可以理解。也不妨刪除你對這個問題的評論,現在你已經有了答案。 (哦,'git checkout -'可能比'git checkout master'更好,因爲它可以回溯到前一個分支) –

1

你可以做一個提交或與此斷碼一個新的分支。之後,檢查你的工作代碼。

git log -1 

注意提交名稱(sha代碼 - 可以是前7個字符)。 爲斷碼創建一個新的分支

git checkout -b broken 
git add -A 
git commit -m "Broken code" 

返回到您的分支,檢出你的工作代碼:

git checkout featureX 
git checkout abc1234 

這樣做的另一種方式是藏匿更改並檢出你的代碼。之後,您可以隱藏彈出文件以使用它們。

+0

爲什麼要注意提交沙,如果你從來沒有使用它? 'git checkout -'也會檢出前一個分支。 –

+0

如果您看到我的第二個區塊,您會看到該分支的結帳和第二次結賬(字母和數字的短序列)。 – rcdmk

2

到git倉庫重置爲certian承諾:

git reset --hard <tag/branch/commit id> 

保存當前的版本,只需將其提交到回購重置回舊

+2

給予一個破壞性的命令,然後在給出命令後,保存工作的指示似乎是不明智的。 –