sudo git rm --ignore-unmatch a.phpを実行しましたが、a.phpは今いるブランチに存在しています。
このコマンドは一体何を削除したのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
--ignore-unmatch
は、簡単に書くと、通常であれば Git が
「fatal: pathspec 'xxxxx' did not match any files」
のようにエラを報告してくる(=実際の削除処理は何も実施されない)状況で、unmatch
というエラーを無視(=ignore
)して削除を実施するようにするためのオプションです。
試しに下記コマンドを実行してみてください。何かエラーは出ませんか?
sudo git rm a.php
より詳しくは下記ページをご覧ください。
[git rm 使い方](http://transitive.info/article/git/command/rm/)
この問題を理解するカギは、ファイルのパスには以下の二種類があることを思い起こすことです。
- ローカルのファイルシステム(WindowsのNTFSやLinuxのext4など)上のパス
- Gitが管理しているパス
git rm *.txt
のように、Gitコマンドの引数に ワイルドカード を使用した場合、まずOS側のシェル(bashやzshなど)がワイルドカードを展開してGitコマンドへ渡します。
その際、ローカル環境には存在するものの、まだGit管理下にないファイル(まだ一度も git add
しておらずインデックスに未登録)がワイルドカードの展開結果に含まれていると、Git は削除しようがないのでエラーメッセージを表示して何も削除しません。
しかし、1ファイルだけが管理外のために残りの99ファイルを個別に指定しなければならないのは大変なので、状況を理解した上で(=オプションを明示的に指定して)エラーを無視して削除出来るようになっている訳です。
ですから、
sudo git rm --ignore-unmatch a.php
は、何らかのエラーを無視して「a.php を強制的に削除する」という意味ではありません。
投稿2015/11/03 23:42
総合スコア5936
0
ベストアンサー
git rm
では、もともとgit管理に入っていないファイル(作成後に一度もコミットしていないファイル)については何もしません。--ignore-unmatch
は、そのようなファイルがある場合の警告を止めるオプションです。
投稿2015/11/03 23:43
総合スコア146581
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。