2010-07-20 104 views

回答

6

因爲他有了可能使用的步驟,所以我投票支持了catchyifyoutry的答案,但這裏有一個方便的列表。

首先,雖然提醒。如果你已經把這個倉庫推到了半公開的位置,並且人們已經把倉庫拉出來了,那麼下面的提示都不會起作用。接下來,他們推動,你拉你會得到原來的變革回到他們未經修改的形式。唯一的辦法是與每個擁有克隆的人交談,並要求他們刪除並重新克隆。這就是說,到列表:

方法來抹殺你犯事故

  • 文件,如果你還沒有拉或承諾任何東西:hg rollback將作爲一個一級撤消
  • 如果你願意扔掉最後N個版本:hg clone -r -N repo-with-too-much repo-with-N-fewer changesets#示例:hg clone -r -2 big-repo small-repo
  • 如果你的變化是很久以前的這類原因會好起來的:hg convert --filemap myfilemap.txt too-big-repo new-repo

在這最後一種情況下myfilemap.txt中有:

exclude path/to/file/to/remove 

注:

  • clone -r情況下,技術上要求的最小克隆,其中可能包括修訂尖-N,如果你有哪些分支回購。另外需要pull -r行(每個頭一個)來拉動其他非線性歷史。
  • hg convert解決方案每個修改後的變更集及其所有後代的哈希碼將被修改。
+0

--filemap技巧聽起來像我所需要的。雖然有點麻煩,但在特殊情況下這應該是必要的。非常感謝! – 2010-07-20 14:56:44

-2

永遠不要將重要的東西存儲在USB存儲器上。這是一個很快就放棄所有代碼的邀請!購買一塊外部硬盤,並有足夠的空間和至少2個獨立的磁盤,您可以鏡像。將它永久存放在某個地方,不要隨身攜帶。如果您需要從其他地方訪問 - 請使用安全的互聯網連接遠程訪問您的硬盤。

+1

在我的設置中,我至少有2個副本:一個在我的電腦的硬盤上,另一個在USB記憶棒上。其中每個都可以作爲備份。我覺得這是足夠的。 – 2010-07-20 10:24:11

+0

代碼是你的(也是選擇):)我經歷了一個電峯,它燒燬了我的電腦,包括內部硬盤,以及USB端口上連接的所有東西,包括一個USB記憶棒...... – 2010-07-20 15:52:30

+0

如果它把所有連接到USB端口的東西炸掉,是不是也會殺死你的外部硬盤?我個人建議在BitBucket這樣的「雲」服務上保留一個遠程存儲庫。 – StriplingWarrior 2014-09-04 03:28:38

4

如果提交非常意外,您可以使用大文件回滾上次提交。 見

hg help rollback 

當然,這個,如果你犯在此期間頂部其他重要的東西不起作用。 另一種方法是使用strip刪除包含大文件的整個分支。

要小心,在您執行任何這些操作之前,請確保您瞭解自己在做什麼!首先在測試存儲庫或克隆上測試命令。