我对一个我不想提交到我的存储库的文件进行了本地更改.它是用于在服务器上构建应用程序的配置文件,但我想在本地使用不同的设置进行构建.当然,当我将'git status'作为要上演的东西时,该文件总是显示出来.我想隐藏这个特定的更改而不是提交它.我不会对文件进行任何其他更改.
经过一番挖掘后,我看到了两个选项:'假设未改变'和'跳过工作树'.这里的前一个问题谈到了它们,但并没有真正解释它们之间的区别.我的问题是:这两个命令有何不同?为什么有人会使用其中一个?
我正在开发一个大型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)