2016-03-31 37 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