回答
正如前面已經說過,從狀態只排除使用:
git status -uno # must be "-uno" , not "-u no"
如果你不是想永久不理你能目前未跟蹤的文件,從您項目的根源,發佈:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
之後每次調用git status
都會明確忽略這些文件。
UPDATE:上述命令有一個小缺點:如果你還沒有.gitignore
文件,你的gitignore會忽略它自己!發生這種情況是因爲在執行git status --porcelain
之前創建了文件.gitignore
。所以,如果你沒有一個.gitignore
文件但我建議使用:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
這將創建完成創建.gitignore
文件前子shell。
命令解釋,因爲我得到了很多選票(謝謝!)我想我最好解釋的命令一下:
git status --porcelain
使用的git status --short
因爲manual狀態改爲「爲腳本提供易於解析的格式輸出,這與短輸出類似,但在git版本中保持穩定並且不管用戶配置如何。「因此,我們有兩個parseability和穩定性;grep '^??'
濾波器僅開始的行??
,其中,根據所述git status manual,對應於未跟蹤文件;cut -c4-
移除每一行,這使的前3個字符我們只是相對路徑未跟蹤文件;- 的
|
符號pipes,其前一個命令的輸出傳遞到下面的命令的輸入; - 的
>>
和>
符號redirect operators,其附加的輸出的公關evious命令分別覆蓋/創建一個新文件。
另一種變體爲那些喜歡誰using sed
代替grep
和cut
,還有一種方法:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore
如果我沒有達到我的f#$%投票限制,我肯定會++這個。 – sjas 2013-02-28 18:36:45
'cut -c4-'**刪除每行的前4個字符,這給我們提供了未跟蹤文件的相對路徑; **號'-c'標記要刪除的列號列表的開始。並且'4-'*選擇*從第4列到結尾的行,從而切換第1-3列。所以你的cut命令實際上會刪除每行的前3個字符。如果你從一個git狀態行中刪除了4個字符,例如這裏的這個文件:'? app/views/static_pages/contact.html.erb',你會刪除'app'的第一個字母。所以命令是正確的,但解釋是錯誤的。 – 7stud 2014-09-10 21:03:46
@ 7stud:謝謝你,你說的對,我寫錯了4。我已經解決了答案。 – Diego 2014-09-11 10:17:43
兩種方式:
將參數「-uno」用於git-status。這裏有一個例子:
[[email protected]_vmware:ft]$ git status
# On branch ft
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)
[[email protected]_vmware:ft]$ git status -uno
# On branch ft
nothing to commit (working directory clean)
或者,您可以添加文件和directires到的.gitignore,在這種情況下,他們將永遠不會出現。
編輯「.gitignore」作爲'git status |貓>> temp && vim temp'。然後編輯該文件,以便刪除前幾行和最後一行,並在後面追加'#'和空格。然後'cat temp >> .gitignore && rm temp'。如果以前沒有'.gitignore','mv temp .gitignore'會做。醜陋的東西,但比手動更新'.gitignore'更好。 – sjas 2012-07-18 13:53:34
這個答案不正確。正確答案是'-uno'。如果使用'-u no',它相當於'no -u' - 它會在名爲'no'(可能不存在)的文件上執行一個狀態並使用默認的'-u'模式。即它相當於'git status no' – 2016-03-01 10:50:56
發現它在the manual
git status -uno
那麼如果每個人都會在發佈前RTFM,我們都不會得到任何代表:-) – 2012-07-18 13:43:15
但是這篇文章沒有回答這個問題。 RTQ似乎更合適。 – 2014-02-19 18:33:04
@ Sridhar-Sarnobat我的回答回答了我的問題,所以我不明白你想告訴的是什麼? – sjas 2015-04-30 11:39:09
如果你有很多未跟蹤文件,並且不希望「 gitignore
「所有這些,請注意,因爲git 1.8.3 (April, 22d 2013),git status
會提及--untracked-files=no
,即使您並未在第一位添加該選項!
「
git status
」建議用戶在需要太長時間時使用--untracked=no
選項進行調查。
-u no
也不顯示未保存的文件。 -uno
按需要工作並顯示未分離,但隱藏未跟蹤。
即使這樣也不完全正確。 'git status -u X'等同於'git status X -u'('X'不是'-u'的參數)。這又相當於'git status X'(因爲沒有參數的'-u'是默認的'-u')。因此,它只是文件'X'上的git-status。所以,如果'X'是'no',它只會嘗試在名爲'no'的文件上執行git status,您可能沒有該文件 – 2016-03-01 10:53:24
如果要永久忽略這些文件,一個簡單的方法將它們添加到.gitignore
是
git ls-files --others --exclude-standard >> .gitignore
爲什麼這不會得到多少票?無需通過其他2個程序! – JoelFan 2017-01-04 21:56:02
@JoelFan:兩個理由: 1)**這個只從git的根目錄開始工作,而接受的從每個子目錄開始工作,你只需要調整目標'.gitignore'路徑 2)if你有一個未被跟蹤的目錄,**這個列表中的每一個單獨的文件,而不是未跟蹤的目錄本身**(所以你不會忽略該目錄,因此仍然可以在未被跟蹤的目錄中報告未來的文件,而接受的只列出目錄,而不是內部未跟蹤的文件,這是你想要做的事情,但通常你只是想忽略整個目錄 – Diego 2017-06-30 13:50:36
謝謝Poolie我欣賞你的建議的不同之處* *因爲@Diego提到的幾點我開始使用文件和文件夾庫,我不想跟蹤/推送原始文件,我只想跟蹤我在庫中添加或重建的文件。 PA租文件夾將忽略所有內容。這/你的解決方案快速添加所有1696個文件。的xD – Chaos7703 2017-07-30 02:58:51
- 1. Git忽略未跟蹤文件
- 2. Git:忽略當前跟蹤目錄中的文件
- 3. 如何將所有當前未跟蹤的文件/文件夾添加到git忽略?
- 4. 如何忽略所有文件,但不在Git中的目錄
- 5. 的Git忽略不忽略一個文件,但所有文件
- 6. 的Git忽略目錄下的所有文件,但不目錄
- 7. git忽略正在跟蹤的文件
- 8. Git:忽略跟蹤的文件
- 9. Git恢復忽略文件,使用git clean刪除所有忽略文件-fX
- 10. 忽略與GIT的所有_notes目錄
- 11. git跟蹤忽略文件夾
- 12. Git忽略指定目錄中的所有文件
- 13. git reset - 忽略特定的未跟蹤文件
- 14. Git跟蹤未追蹤的文件,但未添加到提交
- 15. Git不顯示未追蹤的目錄
- 16. 如何忽略已經在git中跟蹤的文件
- 17. 如何忽略使用git跟蹤文件的新變化?
- 18. GIT:如何將所有本地忽略的文件導出到其他目錄?
- 19. Git:只有在沒有跟蹤文件的情況下忽略目錄
- 20. Git忽略Xcode 4項目的文件
- 21. git添加除忽略.gitignore文件中的所有文件外
- 22. 跟蹤文件中忽略目錄
- 23. Git忽略除子目錄中的某些文件以外的所有文件
- 24. 我如何忽略SourceTree中的不可忽略文件(Git)
- 25. 如何在使用CocoaPods時忽略未跟蹤的文件?
- 26. 我如何忽略未跟蹤文件中的.DS_Store?
- 27. Rails忽略GIT的文件
- 28. 忽略git中所有具有相同名稱的文件
- 29. 如何在任何文件夾中忽略git中的目錄
- 30. 忽略未被忽略的文件
使用'-uno'標誌。 – nhahtdh 2012-07-18 13:39:14
[有沒有辦法讓git不顯示未跟蹤文件?](http://stackoverflow.com/questions/2774416/is-there-a-way-to-get-git-not-to -show-the-untracked-files) – random 2012-07-28 04:48:07
或者你可能想添加一個*到你的.gitignore文件。 :) – vilicvane 2013-08-07 07:38:04