遗憾的是,我最近提交的一些文件对于github而言太大了,所以我想从最新的提交中删除这些文件,从而可以推送其他文件。我已经尝试过使用git reset --HEAD,但它似乎只有在你还没有提交文件的情况下才能工作。还有其他想法吗?
答案 0 :(得分:3)
这应该适合你:
git rm
违规文件git status
应将文件显示为已删除git commit --amend
修改最后一次提交,不再包含文件git push
请参阅此成绩单:
[root@/tmp/test master]touch b c
[root@/tmp/test master]git add b c
[root@/tmp/test master]git commit -m "Add b and c"
[master 1cd809f] Add b and c
0 files changed
create mode 100644 b
create mode 100644 c
[root@/tmp/test master]git rm c
rm 'c'
[root@/tmp/test master]git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: c
#
[root@/tmp/test master]git commit --amend -m "Add only b"
[master 9c5809e] Add only b
0 files changed
create mode 100644 b
[root@/tmp/test master]git diff HEAD^..HEAD
diff --git a/b b/b
new file mode 100644
index 0000000..e69de29
注意:这仅适用于在上次提交中添加了违规文件的情况。在其他情况下,请参阅Remove sensitive data in the GitHub help,它解释了从完整历史记录中删除文件。
如果它不想要你可以尝试交互式变基(git rebase -i <commitish>
)和上面的方法。