是否可以在例如git commit ".*my_file.*"
中使用regular expressions?Git commit使用正則表達式或globes?
我試過了,它似乎只把它們解釋爲globs。我也厭倦了正則表達式標誌:
git commit -regex ".*my_file.*"`
引發錯誤。
有誰知道一種將正則表達式與Git命令結合的方法嗎?
是否可以在例如git commit ".*my_file.*"
中使用regular expressions?Git commit使用正則表達式或globes?
我試過了,它似乎只把它們解釋爲globs。我也厭倦了正則表達式標誌:
git commit -regex ".*my_file.*"`
引發錯誤。
有誰知道一種將正則表達式與Git命令結合的方法嗎?
不與Git本身。 Git只接收從shell傳來的文件列表,所以它將由shell執行文件的正則表達式匹配。我不認爲bash可以做到這一點,但其他shell可能會。
Git也明白' -
@coredump:只有在當前目錄中沒有'.el'文件的情況下才有效,在這種情況下,shell不會擴展文件全局模式,而是將'* .el'文字傳遞給'git add',然後將它解釋爲模式規範。 – mipadi
請看這個成績單:http://pastebin.com/KmejAU3i。它可以工作,即使當前目錄中有一個'.el'文件。擴展不是由shell完成的,因爲glob是引用的。 – coredump
我能想到的最好的方法是使用find命令。例如,如果你只想要Python文件:
find -type f -regex ".*\.py$" -exec git commit {} -m "committing only and all python files" \;
誰能想到別人少笨重的東西嗎?
正如mipadi所提到的,shell可以生成參數以產生git
的輸入。例如,ls
可以組合使用。比方說,我有一個git的init-ED目錄中的以下文件:
.git/
my_new_project_file.py
my_older_project_file.py
some_other_file.py
而且我想補充的一切,但some_other_file.py
。要做到這一點:
ls my*project*.py | xargs git add
檢查我的git status
將表明,無論是my_new_project_file.py
和my_older_project_file.py
相繼上演,而some_other_file.py
已被忽略。
n.b.ls
不支持正則表達式;只是一團糟。
這很酷,但git已經支持globbing:'git add「my * project * .py」'也一樣 – Candic3
@NickVolynkin,globs可以用於'git add'和'git commit',我只是不知道是否可以使用正則表達式,這對我來說會很棒。 – Candic3
哦,沒錯。我在Git中找到了這個語法;從未見過它。 –
也許你試圖添加未跟蹤的文件?從Git參考: 「通過將文件列出爲commit命令的參數,在這種情況下,提交將忽略在索引中執行的更改,而是記錄列出文件的當前內容**(必須已知Git ); **「 –