2011-07-25 66 views
0

我試圖真的刪除git倉庫中的變更集。我使用git reset --hard,但它仍然似乎我能收回舊的變更:如何/我可以在git存儲庫中完全刪除變更集?

% git init 
Initialized empty Git repository in /tmp/ross/test/.git/ 

% echo hi > hi; git add hi; git commit -m hi hi 
[master (root-commit) 3ef4ac5] hi 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 hi 

% echo bye > bye; git add bye; git commit -m bye bye 
[master 966b136] bye 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 bye 

% git tag mytag 

% git log # grab the 'hi' sha number 

% git reset --hard 3ef4ac559079c3b463374a51fb460d46ade396dc 
HEAD is now at 3ef4ac5 hi 

% git checkout mytag 
Note: checking out 'mytag'. 

You are in 'detached HEAD' state. You can look around, make experimental 
changes and commit them, and you can discard any commits you make in this 
state without impacting any branches by performing another checkout. 

If you want to create a new branch to retain commits you create, you may 
do so (now or later) by using -b with the checkout command again. Example: 

    git checkout -b new_branch_name 

HEAD is now at 966b136... bye 

爲什麼我還是簽了bye犯了標籤mytag我做了git reset --hard ...命令後?我認爲git reset --hard應該完全覈實這些編輯?有沒有辦法真正覈實變更集?

回答

2

簡答:「不」。 git reset只能圍繞您的分支指向什麼。孤兒提交(未包含在任何分支或標籤中的提交)將在他們變爲符合條件後進行垃圾回收 - 默認情況下爲兩週後。 Git在管理存儲方面做得很好,所以只要讓它做到這一點。

+0

如果我執行'reset --hard',然後繼續創建變更集,我可以從別人那裏獲得我刪除的變更集嗎? (我正在嘗試使用版本庫的舊版工作版本,最終,其他人將修復主線,並且我將不得不重新檢索我刪除的編輯。)我擔心如果更改集仍然存在存在於我的回購中,這會弄亂其他人的「拉」。 –

+1

同樣,你沒有「刪除」任何東西。如果你只是做了一次重置 - 因爲有人摔了一跤,而你又想回到一個正常工作的版本,而你以後打算在他們解決了什麼問題之後重新拉回來,那麼別擔心。這是非常正常的事件。即你從A開始,做了一次拉到D,然後重置回A,然後拉E(在D之後犯下),那麼這很好,很好。如果在此期間再次對A進行提交,那麼仍然很好,並且很好。這只是一個正常的拉動。 –

相關問題