2012-08-15 9 views
9

変更をコミットしようとしました。私はgit addを使用して、ワイルドカード*.jsを使って作成した新しいjavascriptファイルを追加しました。それから私は、変更をコミットし、githubのにプッシュ:私はgithubのをチェックすると"git add * .js"はサブディレクトリにファイルを追加しませんでした

 
git add *.js 
git commit -m "stuff" 
git push github master 

は、私が編集されていたすべてのファイルが空白でした。彼らはそこにいて、ただ空でした。

私はもう一度コミットしようとしましたが、GITはすべてが最新であると言いました。

は、それから私は戻って、私は git commit -m "stuff"やった後、GITは私の「の.js」ファイルの束は、私はちょうどワイルドカード使用してそれらを追加したにも関わらず上演されていなかったというメッセージが表示ことに気づい: git add *.jsを。これはコミットしようとしたときに表示されたメッセージです。

 
# On branch master 
# Changes not staged for commit: 
# (use "git add/rm ..." to update what will be committed) 
# (use "git checkout -- ..." to discard changes in working directory) 
# 
#  modified: src/static/directory1/js/module1/file1.js 
#  modified: src/static/directory1/js/module1/file2.js 
#  modified: src/static/directory1/js/module2/file1.js 

は、この問題を解決するために、私は私のgit addをやったときに、いくつかのディレクトリを下に行かなければならなかった:私は再びコミットし、その後にプッシュした後のファイルがあったので

 
git add src/static/directory1/*.js 

これは、働いていたように見えましたgithub:

 
git commit -m "stuff" 
git push github master 

ここでは、ワイルドカードを使用するためにいくつかのディレクトリを移動しなければならなかったのはなぜですか?

ありがとうございます!

答えて

8

代替は、findコマンドを使用することです:execをせずに、あなたが作業しているファイルのリストを与えることを実行

find . -name '*js' -exec git add {} \; 

を。したがって、このコマンドを好みに合わせて調整するのは簡単です。

+0

これは実際に私のマシンで動作する唯一のものです、ありがとうございます! –

30

あなたは、あなたのシェルが行う前に、Gitはワイルドカードを受け取るように、引用符を使用する必要が

git add '*.js' 

を使用する必要があります。引用符を付けていない場合、シェルは現在のディレクトリ内でワイルドカード検索のみを行います。私は、ワイルドカードを使用してそれらを追加したにもかかわらず

+0

ワイルドカード(私はそれを試してみました)が与えられたときにGitがサブディレクトリに再帰するという証拠は見つかりません。 –

+2

http://try.github.com/levels/1/challenges/7 –

+0

それは私のローカルマシンでは動作していないようです。これはおそらくGitの最近の機能追加でしたか? –

12

git add *.js

シェルのワイルドカードの展開は、サブディレクトリにない再帰を行います。 Gitがそれを見る機会を得る前に、ワイルドカードが拡張されています。

git add '*.js'を使用すると、Gitはワイルドカードを表示し、.jsで終わるすべてのパス名と一致します。 *が初期の位置にあるため、サブディレクトリを含む.jsのすべてのファイルを再帰的に追加することになります。

+1

私の答えを盗んではいけません。私はあなたの答えについての議論があった30分後に私の答えを加えました。 –

+0

@AaronGray:心配しないで、私は何が起こっていたのか、そしてなぜそれがうまくいったのか理解すれば、あなたの答えもあきらめました。 –

関連する問題