删除未推送的提交而不删除本地更改

时间:2019-04-18 01:35:30

标签: git github

我正在本地编写一些计算代码,并将其与Github同步。我最近写了一些新代码,并在文件夹内的一些大型数据文件中进行了测试。在添加并提交整个文件夹并尝试推送它之前,我没有注意文件的大小。但是,指示文件大小太大的错误无法推送。

我对git还是很陌生,所以我想只是从文件夹中删除生成的数据文件,但只是意识到提交已经记录了超大数据文件。我环顾四周,发现像git revert命令这样的选项。但是好像我git恢复后,我更新过的所有代码都回到了先前的提交。我只是想重新提交而不包含超大数据文件,以便我可以成功进行推送。有谁可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

您可以简单地告诉git从索引中删除文件,然后修改您的最后一次提交。

git rm --cached path/to/your/file
git commit --amend

使用git rm --cached可以从索引中删除文件,但是将其保留在文件系统中,而使用git commit --amend可以修改上一次提交,包括这些更改。您进行的每项更改都会纳入其中。您甚至有机会修改提交消息。

答案 1 :(得分:1)

尝试运行:

1 ---> 100 2 ---> 200 3 ---> 300 4 ---> 400 5 ---> 500 1 ---> 100 2 ---> 200 3 ---> 400 4 ---> 500

它将删除您的最新提交,但将更改保留在工作树中,以便您可以创建新的提交但可以修改其中的内容。

答案 2 :(得分:1)

git reset --soft HEAD~1
git reset path/to/file
git commit

说明

git reset -soft HEAD~1将重置您的上一次提交(HEAD~1是对上一次提交的引用),但请保留更改的阶段性,我们可以在git reset path/to/file之前取消对文件的暂存。