2016-07-21 42 views
0

我有一個git回購,我爲Android提交我的apk版本。我猜這是一個壞主意,但我這樣做,因爲有時我需要回到某個apk版本來測試和重建不是一個選項,因爲gradle依賴關係通常不再可用。如何刪除兩個修訂版本號之間的文件提交?

所以現在我的回購是2演出,我需要做一些空間。上一次發生這種事我做錯了事,並且失去了一點歷史,所以我想確保我這次做得對,因爲我並不像上次那樣着急。

基本上,我每次構建它時都會提交我的apk,甚至將它發佈給測試版用戶。我想從我的回購的歷史中刪除所有非生產木材。所以基本上我想刪除修訂版xyz和修訂版abc之間的所有apks。我想在abc之前保留xyz和所有內容。我應該提到apk有相同的文件名,並且這個repo只能用於apk文件。

我該怎麼做?

謝謝。

回答

0

假設提交歷史記錄類似A-B-xyz-C-D-abc-E-F<----master

git branch backup_master master 
git rebase --strategy=recursive -X theirs --onto B abc master 

xyz C D abc從歷史,這有望成爲像A-B-E'-F'現在除去。由於apk是一個二進制文件,因此在這種重新綁定期間總會有衝突。這就是爲什麼我們在這裏需要--strategy=recursive -X theirs。 rebase完成後,你可以做一些檢查,看看在E和apk的E'是否相同。如果E沒問題,我們可以肯定之後的提交也沒問題。

git rev-parse E:<apk_path> 
git rev-parse E':<apk_path> 

如果兩個輸出相同,現在一切都好了。

如果我們不使用--strategy=recursive -X theirs,由於衝突應用E時,重新綁定處於暫停狀態。如果發生這種情況,請運行以下命令來完成rebase。

git checkout E -- apk_path 
git add apk_path 
git rebase --continue 
+0

我認爲這有效。我有推動變化的問題,但由於回購只是我使用,我刪除了遠程並再次推。謝謝。 – casolorz

相關問題