2012-01-12 94 views
1

我的提交歷史記錄存在問題。那麼,這不是一個問題,因爲它不會影響問題,它更像是一個視覺問題。基本上我正在開發一個CakePHP項目,並且試圖將CakePHP作爲子模塊添加進去,但是後來我放棄了。問題是,我的歷史,現在看起來是這樣的(上塔):清理混帳提交歷史

Screenshot from Tower

正如你所看到的,線停止並重新開始了,之前還有所有的CakePHP的歷史,它的git倉庫的一個。我應該怎麼做才能將其全部刪除?謝謝。

回答

1

它看起來像是不小心將CakePHP直接拉入項目中,而不是將其作爲子模塊添加到項目中。最簡單的做法可能是刪除整個repo並重新開始(或者創建一個新的repo,並只從現有的分支中提取master分支)。您也可以嘗試刪除CakePHP抓取留下的所有參考,但這將會是一些工作,它會將對象留在您的倉庫中幾個月,聽起來像這是一個新項目,所以只是將您關心的提交拉入新的回購可能會更簡單。

要創建一個只包含的主分支新的回購您現有的,像下面應該工作:

mkdir newRepo 
cd newRepo 
git init 
git fetch ../oldRepo/.git master:temp 
git reset --hard temp 
git branch -d temp 

這隻會獲取master分支而已。 temp的位是因爲git否則會拒絕進入一個非裸回購的HEAD。

在任何情況下,一旦你有一個新的回購,你應該能夠只使用

git submodule add git://url/for/CakePHP.git path/to/submodule 

添加的子模塊。

+0

是的,我認爲我這樣做,或者,因爲提交沒有出現在我的回購網上,我只是簽出一個,所以我會保留當前提交沒有這些!謝謝你的提示!:) – entropid 2012-01-12 03:19:14

1

那麼你可以使用git rebase -i進入互動變基模式,在這裏你可以選擇你想保持其承諾,要合併(squash)和完全刪除(這樣通過提交從刪除應用更改回購)。但是,只有當你還沒有分享你的歷史時,你才應該這樣做。如果歷史記錄發生變化,並且有歷史記錄的人試圖與新記錄合併,它會給出一些非常嚴重的合併衝突,因爲git不會檢測到歷史記錄之間的任何關聯。

+0

問題是這些提交不會出現在'git rebase -i'中!我已經嘗試過了。 :( – entropid 2012-01-12 02:07:10

+2

@熵:在這種情況下,你可能想告訴我們更多關於你想要刪除哪些提交以及你已經嘗試過了哪些提交(例如,你究竟是怎麼稱呼'git rebase -i') – Grizzly 2012-01-12 02:22:47