2016-03-31 38 views
-1

本質上我想在本地回購中回滾兩個提交。沒有任何東西被推到遙遠的地方。如何刪除大文件2 git提交回來?

因此,在我的GIT倉庫中,我無意中在提交(A)中添加了一個巨大的zip文件。我意識到這一點,使用finder刪除zip文件,並做了另一個提交(B)。

但現在我意識到,如果我按這個偏遠,這將包括整個壓縮文件...

使事情更復雜的我也有一大堆重要的變化,以幾個文件那首先承諾(A)我不想失去。

在推送到遠程設備之前,如何從歷史記錄中刪除一個zip文件?我可以在這兩次提交之前移回我的文件狀態,而不會丟失其他幾個文件中所做的所有更改嗎?

回答

0

修復它的最簡單方法是使用git reset <commit>命令。

在你的情況,因爲你要回滾兩次提交,你可以這樣做:

git reset HEAD~2

git help reset

git的復位[<mode>] [<commit>]

--mixed重置索引而不是工作樹(即,保存更改的文件但未標記爲提交)並報告尚未更新的內容。這是默認操作。

之後,您的倉庫中的文件根本不會改變,但兩個最新的提交將不再存在。

然後,你可以選擇你想要提交的文件,只是你通常會如何。

0

鏈接:How to move your HEAD/ revert changes

看了上面的鏈接的全部細節。

您可以使用:


從這裏以上後兩者是可以做些什麼來重置一個流動的HEAD

enter image description here


其他選項:

How to remove big files from the repository

您可以使用git filter-branch或BFG。 https://rtyley.github.io/bfg-repo-cleaner/

BFG Repo-Cleaner

到GIT-濾波器分支的替代方案。

的BFG是一個簡單,快捷的替代git的過濾分支用於清潔壞數據您的Git倉庫的歷史:

*刪除瘋狂大文件*
*刪除密碼,證書&其他私人數據

例子(從官方網站)

在所有這些示例中,bfg是java -jar bfg.jar的別名。

# Delete all files named 'id_rsa' or 'id_dsa' : 
bfg --delete-files id_{dsa,rsa} my-repo.git