65

git add *.erb基本的な(または単純なワイルドカード式)を実行しようとすると、 gitはそれを認識しません(それら)。補足として、私はこれまでにこれをやったことがないので、それは新人の間違いだと確信していますが、他のSOの投稿や私の学校の卒業生リストサーブで助けが見つからなかったので、この投稿が適切であると思いました.

(別の) 例として、git statusは次のように表示されます。

#   modified:   config/routes.rb
#   modified:   spec/models/question_spec.rb

ルート ファイルのみをステージングしたかったので、git add *s.rbを試してみましたが、さいころはありませんでした。アプリのルートにいます...ワイルドカード表現を適用しようとしているファイルを含むディレクトリにいる必要がありますか? それは痛いでしょうが...実際には...うまくいきました。

これが別の投稿である必要がないことを願っていますが、特定のディレクトリに cd する必要がないワイルドカードを使用する簡単な方法はありますか?

4

4 に答える 4

100

一重引用符で囲みます。これはうまくいくはずです。

git add '*s.rb'

アップデート

さらにテストした結果、引用符なしでもできることがわかりましたgit add *s.rb。これは、私のgitバージョン1.7.10.4(Mac OSX Lion、自作)でうまくいくかもしれません。私の説明は、シェルのワイルドカード展開がどのファイルとも一致しない場合、元の展開されていない引数 '*s.rb' を に提供するということgit addです。

sh-3.2$ git status
#
#   modified:   config/routes.rb
#   modified:   spec/models/products_spec.rb
#

今、私はgit add引用符なしで行います。

sh-3.2$ git add *s.rb

驚くべきことに、それは機能します!

sh-3.2$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   config/routes.rb
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   spec/models/products_spec.rb
#

ワイルドカード パターンがどのファイルとも一致しない場合、git はこのエラーを出します。

sh-3.2$ git add *x.rb
fatal: pathspec '*x.rb' did not match any files
于 2012-08-22T04:15:52.490 に答える
6

bash のバージョンが古すぎるため、再帰的なグロブを機能させることができません。だから私がすることは

find . -name "*.rb" | xargs git add

扱いやすく、必要に応じて他のフィルターを追加することもできます。

find . -name "*.rb" | grep -v "not_me.rb" | xargs git add

他にも役立つケースがいくつかあります。

リポジトリに既に存在するファイルを追加したいだけの場合は、次のことができます

git add -u .

すべてを追加したい場合は、

git add .
于 2012-08-22T04:25:48.750 に答える
0

私の経験では (オプションか何かが欠けている可能性があります)、git add は現在のディレクトリとサブディレクトリ内のファイルのみを調べます。したがって、すべてを追加する場合は、リポジトリのルート ディレクトリに移動します。ただし、リポジトリが非常に大きい場合、特に -u フラグを渡さない場合、これには時間がかかる可能性があります。

于 2012-08-22T04:13:49.390 に答える