执行git commit
时,有没有办法在我的编辑器中显示未跟踪的文件(在$EDITOR
中定义)?我知道如何在shell(git status -uno
)中这样做,但我也想在编辑器中这样做。
请注意,我不想永远忽略这些文件;我只是不想在某些场合看到它们。
答案 0 :(得分:39)
如果您曾想要将它们提交到您的存储库,请使用.gitignore
文件忽略它们。更多细节可以在gitignore
man page找到。在$EDITOR
输入提交消息时,它们不会显示为未跟踪的文件。
如果您在提交时根本不想看到它们,请将Git配置变量status.showUntrackedFiles
设置为no
,如上所述here:
$ git config --global status.showUntrackedFiles no
答案 1 :(得分:16)
来自git-commit手册页:
-u[], --untracked-files[=] Show untracked files (Default: all). The mode parameter is optional, and is used to specify the handling of untracked files. The possible options are: · no - Show no untracked files · normal - Shows untracked files and directories · all - Also shows individual files in untracked directories. See git-config(1) for configuration variable used to change the default for when the option is not specified.
答案 2 :(得分:5)
您可以临时使用git commit选项-uno
来屏蔽未跟踪的文件(git help commit
)。
如果您想要永久解决方案,请使用.gitignore
文件。
例如,如果要忽略文件bar.foo
和任何扩展名为.bak
的文件,则必须在项目的根目录中创建一个.gitignore
文件, :
bar.foo
*.bak
全局gitignore
文件会忽略某些文件(例如,忽略点文件和目录)。
答案 3 :(得分:3)
将文件名 - 或文件名模板(通配符)添加到.gitignore文件中,并将其添加到存储库中:
git add .gitignore
git commit -m 'Added .gitignore file'
例如,对于我的Go存储库,我有一个包含以下内容的.gitignore文件:
*.o
*.a
*.so
*.pl
*.6
*.out
_obj/
_cgo_defun.c
_cgo_export.c
_cgo_export.h
_cgo_gotypes.go
*.cgo1.go
*.cgo2.c
example/example
ifix1/esqlc-cmds.c
我应该用外卡压缩'_cgo_
'名字;另一个'.c'文件是从'.ec'文件生成的,所以不需要跟踪它。
答案 4 :(得分:1)
有时候,无需更改的repo文件或需要添加到repo的新文件的通知。但是,将文件名添加到.gitignore
可能也不是一个好的选择。例如,其他用户不可能生成的本地生成的文件(例如,由编辑器创建的文件)或实验测试代码的文件可能不适合出现在.gitignore
文件中。
在这些情况下,请使用以下解决方案之一:
如果文件是已更改的回购文件
使用命令:
git update-index --assume-unchanged "$FILE"
要撤消此操作,请使用以下命令:
git update-index --no-assume-unchanged "$FILE"
update-index
命令无法处理尚未添加到回购的新文件。
如果文件是新文件而未添加到回购
将其文件名添加到repo的exclude
文件中:
echo "$FILE" >> .git/info/exclude
这也适用于已更改的repo文件,但没有特定的撤消命令。需要编辑exclude
文件并从中删除文件名。或者其他命令可以近似它:
ex -s -c"g/^${FILE}\$/d" -cwq .git/info/exclude
请注意,这会覆盖现有的exclude
文件,如果指定的文件名包含可能影响正则表达式的特殊字符,则结果是不可预测的。
页面"Ignoring files" on GitHub Help建议使用exclude
文件。
答案 5 :(得分:-1)
如果您使用的是git-extensions工具 在提交选项卡中,只需选择要忽略的文件,右键单击并将其添加到.gitignore