是否有一个git命令可以恢复工作树和索引中的所有未提交的更改,还可以删除新创建的文件和文件夹?
我试图寻找一个关于减少回购规模的好教程,但没有找到.我如何减少我的repo大小...它大约10 MB,但事情是Heroku只允许50 MB,我不在附近完成开发我的应用程序.
我已经将通常的嫌疑人(日志,供应商,文档等)添加到.gitignore.虽然我最近只添加了.gitignore.
有什么建议?
我正在按照制作github页面的说明,忘记进入我的git子目录.结果,我只是使用了一个完整的文档目录git clean -fdx.有什么办法可以解除这个可怕的错误吗?
我有我的回购@github.我在家做了一些工作并把它推到了github.它涉及一些文件和目录的删除.现在我在我的工作箱上,它在删除文件和目录之前有一份代码副本.
我发布了以下内容:
git remote update
git checkout HEAD
git pull origin HEAD
Run Code Online (Sandbox Code Playgroud)
它删除了它应该拥有的所有文件,但没有删除文件所在的目录.
两个问题:
我试图git pull origin master从我的服务器做一个但不断收到错误:
Please move or remove them before you can merge.
没有未跟踪的文件,但由于某种原因,它似乎与被忽略的文件有问题.
我尝试运行一个git clean -nd以查看将被删除的内容,并列出了一大堆被忽略的文件.gitignore.
我怎么能解决这个问题呢?
当我有.gitignore data/*并运行时git clean -fd,数据文件夹及其所有内容文件将被删除.
我想要的是删除git仓库中所有未经检查的文件,同时排除所有被忽略的文件(即不要删除gitignored文件).我能做什么?
我正在开发一个大型python项目,如果.pyc和*〜文件,我真的很生病.我想删除它们.我已经看到-Xgit clean 的标志会删除未跟踪的文件.你可以想象,我不是跟踪.pyc也不是*~文件.那就是诀窍.问题是我有一个local_settings.py文件,我想在git clean之后保留.
所以,这就是我所拥有的.
的.gitignore:
*.pyc
*~
local_settings.py
Run Code Online (Sandbox Code Playgroud)
当我执行此命令时:
git clean -X -n -e local_settings.py
Run Code Online (Sandbox Code Playgroud)
我得到这个结果列表:
将删除local_settings.py
将删除requirements.txt~
将删除(其他一堆)〜文件
将删除(其他一堆)pyc文件
我不想删除local_settings.py文件.我已经尝试了很多方法来做到这一点,但我无法弄清楚如何完成它.
git clean -X -n -e local_settings.py
git clean -X -n -e "local_settings.py"
git clean -X -n --exclude=local_settings.py
git clean -X -n --exclude="local_settings.py"
Run Code Online (Sandbox Code Playgroud)
似乎没有任何工作.
编辑:
对于后代,正确的方法是(谢谢@Rifat):
git clean -x -n -e local_settings.py # Shows what would remove (-n flag)
git clean -x -f -e local_settings.py # Removes it (note the -f …Run Code Online (Sandbox Code Playgroud) 当我运行git clean --dry-run结果有点像:
Would remove an_untracked_file
Would remove an_untracked_file_2
Would not remove some_unrelated_folder/subfolder/
Run Code Online (Sandbox Code Playgroud)
跟踪"无关"文件夹并且没有任何更改,因此我不希望git删除它们.
但是,为什么git报告Would not remove我的项目的一些(但不是全部)正常(并且完全未触及)文件夹?
我可以告诉git要考虑什么,但然后决定反对,删除它们?
git status仅列出我所知道的几个未跟踪文件.正如所料.
git ls-files --other --exclude-standard返回那些相同的未跟踪文件.正如所料.
git ls-files --other --exclude-standard --directory返回那些相同的未跟踪文件,以及一堆看似正常的目录.这不是我期望看到的,因为我认为目的 --directory是减少,而不是增加返回的结果数量.
在检查意外目录时,似乎每个目录都是空的,除了".gitignore"d .svn子文件夹.也许这会影响事物.
任何人都可以帮我理解这种行为吗?
谢谢
嗨,我很好奇这两个命令之间的区别.当他们在这里介绍时:https://www.atlassian.com/git/tutorials/undoing-changes
看起来像git reset --hard也设置了staging和工作目录以匹配最新的提交,但最后他们说git reset --hard不会改变当前的工作目录.所以我在这里很困惑,有人可以澄清一下吗?
有人偶然将他们所有的bin和obj文件夹提交到我们的仓库(大约有40个这样的文件夹).我想git rm -r
在所有这些文件夹上做一个.有命令这样做吗?