获取git不显示未跟踪的文件

时间:2010-05-05 15:08:25

标签: git

执行git commit时,有没有办法在我的编辑器中显示未跟踪的文件(在$EDITOR中定义)?我知道如何在shell(git status -uno)中这样做,但我也想在编辑器中这样做。

请注意,我不想永远忽略这些文件;我只是不想在某些场合看到它们。

6 个答案:

答案 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文件中。

在这些情况下,请使用以下解决方案之一:

  1. 如果文件是已更改的回购文件

    使用命令:

    git update-index --assume-unchanged "$FILE"

    要撤消此操作,请使用以下命令:

    git update-index --no-assume-unchanged "$FILE"

    update-index命令无法处理尚未添加到回购的新文件。

  2. 如果文件是新文件而未添加到回购

    将其文件名添加到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