Heim > Fragen und Antworten > Hauptteil
刚上传了vs项目到github,但是忘记搞gitignore文件,导致项目上传的体积太大,
现在不知道怎么办了?
删除里面所有文件,写好gitignore文件后重新commit然后push?
大家讲道理2017-04-22 09:01:48
git rm -r --cache . git add . git commit -m "gitignore working"
第一次提交问题,系统半天没有审核过,于是去搜了下, 事实上我昨晚从stackoverflow上面找到了答案。不过还是要谢谢各位。 http://stackoverflow.com/questions/1139762/gitignore-file-not-ignoring
阿神2017-04-22 09:01:48
请输入链接描述
如果你想用脚本的方式修改大量的提交,还有一个重写历史的选项可以用——例如,全局性地修改电子邮件地址或者将一个文件从所有提交中删除。这个命令是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 会自动地删除不对这个子目录产生影响的提交。
阿神2017-04-22 09:01:48
提供一个比较小白的的解决办法: 进入项目-->Setting-->Delete this Repository 然后你再重新建一个repo就完了
阿神2017-04-22 09:01:48
你需要用
git reset
详细可以查看 Git的撤消操作 - 重置, 签出 和 撤消: http://www.liuhui998.com/4_9.html
假设,你想要取消所有的改变,返回到最近一次的提交,命令如下:
$ git reset --hard HEAD
天蓬老师2017-04-22 09:01:48
先备份 或者先commit (血的教训)
git reset --hard
YOUR HEAD
如何查询提交记录的head
git reflog || git log