2012-04-05 109 views
0

我在當前的Java項目中有一堆Java文件,我一直在修改,我想從項目的根文件夾(在Ubuntu中)一舉將它們全部添加。git add ./*.java不起作用?

我想:

git add ./*.java 

但是,這並不這樣做。我試圖逃避星號如下:

git add ./\*.java 

但這並沒有這樣做。然後,我嘗試像這樣引用它:

git add "./*.java" 

但那不行。

爲 「混帳添加」 手冊頁給這個作爲一個例子:

  $ git add Documentation/\*.txt 

我:

從文件目錄下所有的* .txt文件和 及其子目錄添加內容嘗試使用上面的「文檔」等目錄來限定這一點,但這也不起作用。

我錯過了什麼?

[更新]我嘗試了以下@ GoZoner的建議和它的作品,但只有如果文件是新的,而不是他們是否已更新預先存在的。這很奇怪。

+0

你會得到什麼錯誤? 'git add ./*。java'或'git add * .java'都應該添加當前目錄中的所有Java文件。如果成功,您將看不到任何信息。 'git status'說什麼? – 2012-04-05 18:28:36

+1

將'git add'替換爲'ls',然後重試。具體來說,'ls ./*.java'。如果'ls'列表中沒有顯示,那麼'git add'也不會找到任何東西。 – GoZoner 2012-04-05 19:17:29

+0

+1到@GoZoner。 Fileglobbing由shell完成,而不是被調用的程序。用相同的模式測試你使用ls添加的內容。 – 2012-04-05 19:59:55

回答

0

而不是做「git的添加」使用:

git status 

會告訴你哪些文件是新的(未知的GIT)和哪些文件已被修改。更重要的是,對於你的情況,'git status'會顯示報告文件的完整路徑。知道完整的路徑,你可以用'git add full-path-to.java'逐個添加它們,或者如果一切都看起來可以提交,'git add -A'會將它們全部添加。

+0

我知道這一點;我通常會說「git add」。並展示我的變化。我正在尋找一種方法來跳過一些擴展名不同於我感興趣的文件的文件... – scorpiodawg 2012-04-05 20:15:41

+0

現在,重要的是*看*要添加的.java文件。你是說'git status'顯示一個文件列表,當你在其中任何一個上使用'git add'時,使用完整路徑,它不會被添加? – GoZoner 2012-04-05 20:31:04

0

您需要轉義'。'

git add \./\*.java 

的作品。

$ git add \./\*.c 
$ git status 
# On branch br1 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: bang/boo.c 
# new file: bing/one.c 
# 
+0

這很有趣:您的解決方案可以工作,但*僅適用於新文件。如果你在上面提交你的改變並且現在更新了boo.c,那麼同樣的git add語句不會再選擇改變。 – scorpiodawg 2012-04-05 21:10:19

+0

不適合我。我提交了上述索引,添加了兩個文件。然後我改變了bang/boo.c。 'git status'將這些文件顯示爲'未提交進行提交'。然後我使用與上面相同的'git add'命令。 'git status'將bang/boo.c顯示爲'要提交的更改'。 – GoZoner 2012-04-05 22:02:20

+0

的確很奇怪。你在做什麼shell/OS? – scorpiodawg 2012-04-05 22:05:49

0

如果你想限制自己的文件的git已經知道了,你可以結合使用過濾器的git-LS-文件:

git ls-files [path] | grep '\.java$' | xargs git add

在這裏,你必須指定路徑到您的文件夾。

OR

在這裏你發出指令,以顯示緩存ÇØ文件,同時排除標準混帳排除:在每個目錄中的.git /信息/排除的.gitignore和用戶的總體排除文件。

git ls-files -co --exclude-standard | grep '\.java$'| xargs git add

從這個答案Recursively add files by pattern