質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

2回答

4675閲覧

sudo git rm --ignore-unmatch

tixure55

総合スコア400

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

0クリップ

投稿2015/11/03 18:39

sudo git rm --ignore-unmatch a.phpを実行しましたが、a.phpは今いるブランチに存在しています。

このコマンドは一体何を削除したのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

git rmでは、もともとgit管理に入っていないファイル(作成後に一度もコミットしていないファイル)については何もしません--ignore-unmatchは、そのようなファイルがある場合の警告を止めるオプションです。

投稿2015/11/03 23:43

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問