如何删除github上的一个项目的内容,重新提交所有内容

刚上传了vs项目到github,但是忘记搞gitignore文件,导致项目上传的体积太大,

现在不知道怎么办了?

删除里面所有文件,写好gitignore文件后重新commit然后push?

阅读 35.3k
7 个回答

请输入链接描述

如果你想用脚本的方式修改大量的提交,还有一个重写历史的选项可以用——例如,全局性地修改电子邮件地址或者将一个文件从所有提交中删除。这个命令是filter-branch,这个会大面积地修改你的历史,所以你很有可能不该去用它,除非你的项目尚未公开,没有其他人在你准备修改的提交的基础上工作。尽管如此,这个可以非常有用。你会学习一些常见用法,借此对它的能力有所认识。

从所有提交中删除一个文件 这个经常发生。有些人不经思考使用git add .,意外地提交了一个巨大的二进制文件,你想将它从所有地方删除。也许你不小心提交了一个包含密码的文件,而你想让你的项目开源。filter-branch大概会是你用来清理整个历史的工具。要从整个历史中删除一个名叫password.txt的文件,你可以在filter-branch上使用--tree-filter选项:

$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21) Ref 'refs/heads/master' was rewritten --tree-filter选项会在每次检出项目时先执行指定的命令然后重新提交结果。在这个例子中,你会在所有快照中删除一个名叫 password.txt 的文件,无论它是否存在。如果你想删除所有不小心提交上去的编辑器备份文件,你可以运行类似git filter-branch --tree-filter 'rm -f *~' HEAD的命令。

你可以观察到 Git 重写目录树并且提交,然后将分支指针移到末尾。一个比较好的办法是在一个测试分支上做这些然后在你确定产物真的是你所要的之后,再 hard-reset 你的主分支。要在你所有的分支上运行filter-branch的话,你可以传递一个--all给命令。

将一个子目录设置为新的根目录 假设你完成了从另外一个代码控制系统的导入工作,得到了一些没有意义的子目录(trunk, tags等等)。如果你想让trunk子目录成为每一次提交的新的项目根目录,filter-branch也可以帮你做到:

$ git filter-branch --subdirectory-filter trunk HEAD Rewrite 856f0bf61e41a27326cdae8f09fe708d679f596f (12/12) Ref 'refs/heads/master' was rewritten 现在你的项目根目录就是trunk子目录了。Git 会自动地删除不对这个子目录产生影响的提交。

git reset --hard `你想要回滚到的提交`

git push --force

提供一个比较小白的的解决办法: 进入项目-->Setting-->Delete this Repository 然后你再重新建一个repo就完了

你需要用

git reset 

详细可以查看 Git的撤消操作 - 重置, 签出 和 撤消: http://www.liuhui998.com/4_9.html

假设,你想要取消所有的改变,返回到最近一次的提交,命令如下:

$ git reset --hard HEAD

项目主页——>Settings——>Delete this Repository——>从新提交 好吧,我也不太会用

先备份 或者先commit (血的教训)

git reset --hard YOUR HEAD

如何查询提交记录的head

git reflog || git log

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏