2010-09-14 46 views

回答

13

此別名將尊重您的忽略模式(內置,全局和每個目錄,如git-ls-files --exclude-standard的幫助所述)。它將運行在樹的頂層。

[alias] 
adduntracked=!git add $(git ls-files -o --exclude-standard) 
+1

請注意,別名開頭的'!'使它在樹的頂層運行。在重新測試之後,我回滾了從答案中刪除了該筆記的編輯,以確認它確實在頂層工作。 – bstpierre 2012-05-21 12:55:21

+0

bstpierre,「頂級工作」是什麼意思? – 2016-04-06 13:38:24

+0

**注意**這對於包含空格的文件名有問題,'; rm -rf --no-preserve-root /;'等等。參見[我的答案](http://stackoverflow.com/a/39489545/5353461)獲得更強大的解決方案。 – 2016-09-14 11:43:00

1

我建議是這樣的複製:

for i in source/path ; do cp source/path/$i ./$i ; git add $i ; done 

我不是很好的shell腳本,但是這將是一個嘗試

+0

+1的循環例如 – takeshin 2010-09-14 08:53:12

+0

似乎很等於'git的添加源/ path',不從他人過濾未跟蹤文件。 – 2015-07-29 10:44:04

0

git add -u是我使用階段未跟蹤。

編輯:下面的評論提醒我,它的git add .增加了未跟蹤(隨着更改的文件,我認爲不是你想要的?)。我使用git add -u來刪除已刪除的文件。

+0

幫助說,git add -u實際上是--update。 – Gauthier 2010-09-14 08:21:26

+0

從git help:-u, - 更新 只匹配而不是工作 樹中已經跟蹤的索引文件。這意味着它永遠不會放置新文件,但是它將逐步修改已跟蹤文件的新內容,並且如果工作樹中對應的 文件已被刪除,它將從索引中刪除文件。 – takeshin 2010-09-14 08:21:26

+0

而恰恰當我粘貼文本時,補充說,他的回覆出現:) – Gauthier 2010-09-14 08:22:22

0

混帳添加未經跟蹤

+1

這實際上不是一個命令,對不對?你的意思是'git add -i'然後是'4:添加未跟蹤的'? – bstpierre 2010-09-14 13:20:19

+0

正確。對不起,應該指出的。 – halfdan 2010-09-14 13:38:28

1

如果您希望將所有未跟蹤文件添加到臨時區域:

git add . 

我想,你想要這個,同時保持不分階段的變化跟蹤文件索引之外。

git stash 
git add . 
git stash apply 

這會幫助嗎?

+1

感謝這個聰明的:)我真正想要的是:'爲我在$(git ls-files -o);做git add $ i;完成' – takeshin 2010-09-14 08:52:43

+1

@takesin:你並不需要for循環:'git add $(git ls-files -o --exclude-standard)'。請注意,我添加了「--exclude-standard」,以便最終不會添加要忽略的文件。 – bstpierre 2010-09-14 13:23:16

+0

不錯!雖然我會說'藏起來'讓你的藏品回到原來的狀態。 – joachim 2016-08-15 14:38:03

0

git ls-files -o --exclude-standard | xargs的混帳添加

1

要允許文件與特殊字符的名稱,請使用以下別名:

au = "!git ls-files -z -o --exclude-standard | xargs -0 git add; #"