2010-05-05 55 views
12

在做git commit時,有沒有辦法在我的編輯器中顯示未跟蹤文件(在$EDITOR中定義)?我知道如何在shell中執行此操作(git status -uno),但我想在編輯器中執行此操作。讓git不要顯示未跟蹤文件

請注意,我不想永遠忽略這些文件;我只是不想在某些場合看到他們。

+0

的可能的複製[我如何做一個「git的狀態」,因此不會在不使用的.gitignore顯示未跟蹤文件?(http://stackoverflow.com/questions/594757/how-do-我做了一個git-status-so-it-doesnt-display-untracked-files-without-using) – 2017-05-15 15:28:14

回答

12

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. 
+0

謝謝,這是有效的。 – chiggsy 2010-05-05 15:18:02

+0

關於git的好處是它們確實試圖保持命令行選項在具有類似功能的命令之間一致。 – 2010-05-05 15:20:17

+0

是否知道是否有永久更改設置的方法,但獨立執行'status'和'commit'命令?我想用'status'來查看它們,但是不能用'commit',但'git-config(1)'只顯示出影響這兩個命令的選項'status.showUntrackedFiles'。 – 2013-02-09 11:21:06

28

如果您沒有有史以來想要提交到您的回購,使用.gitignore文件忽略它們。更多細節可在gitignore man page上找到。當您在$EDITOR中輸入提交信息時,它們不會顯示爲未跟蹤的文件。

如果你根本不希望看到他們提交時,Git的配置變量設置status.showUntrackedFilesno,如上所述here

$ git config --global status.showUntrackedFiles no 
+0

嗯,這是一件有趣的事情要知道。謝謝 – chiggsy 2010-05-05 15:36:24

+4

如果你想忽略當前repo中未跟蹤的文件,而不是全局使用:'git config --local status.showUntrackedFiles no' – yaitloutou 2017-02-01 00:22:24

+0

@yaitloutou,你的擴展應該被添加到答案中。 – oliversm 2017-07-28 14:09:32

5

您可以臨時使用的git提交選項-uno掩蓋未跟蹤文件(git help commit)。

如果您想要永久性解決方案,請使用.gitignore文件。

舉例來說,如果你想忽略文件bar.foo並與.bak擴展名的文件,你中庸之道在包含項目的根目錄下創建一個.gitignore文件:

bar.foo 
*.bak 

某些文件是由全局文件gitignore忽略(例如,點文件和目錄被忽略)。

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'文件生成的,所以不需要跟蹤。

1

有次通知不希望有關或者是改變回購文件或需要被加入到回購的新文件。但是,將該文件的名稱添加到.gitignore可能也不是一個好選擇。例如,其他用戶不可能生成的本地生成的文件(例如編輯器創建的文件)或實驗測試代碼的文件可能不適合出現在.gitignore文件中。

在這種情況下,使用這些解決方案之一:

  1. 如果該文件是一個改變的回購協議文件

    使用命令:

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

    要撤消這個,使用命令:

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

    儘管如此,update-index命令對尚未添加到回購的新文件無效。

  2. 如果該文件是新的,而不是加入到回購

    其文件名添加到回購的exclude文件:

    echo "$FILE" >> .git/info/exclude

    這也適用於改變回購的文件,但有不是它的特定撤消命令。 exclude文件需要進行編輯並從中刪除文件名。或者其他的命令可能接近它:

    ex -s -c"g/^${FILE}\$/d" -cwq .git/info/exclude

    注意,這將覆蓋現有exclude文件,並在指定的文件名中包含可能影響正則表達式的特殊字符,結果是不可預知的。

    該頁面"Ignoring files" on GitHub Help推薦使用exclude文件。

相關問題