2016-12-12 8 views
19

私はいつもgit checkout -- .を使って作業ディレクトリをクリアしました。私は--がパラメータを渡すことを考えるのを避けるために必要とされていたと私は考えました。git checkout - 。 vs git checkout

今、同僚は--を落とすことができました。

これらの2つのコマンドには違いがありますか?

PS:git checkout -- .git checkout . VSはGoogleに難しいの一種であるので、ここで質問...

+0

あなたはこれをどこから読んだのですか? [公式ドキュメント](https://git-scm.com/docs/git-checkout)を読んだことがありますか? – axiac

答えて

27

私は--のようにファイルとしてcheckoutを以下のものを扱うとしないようにGitリポジトリを指示する方法であることを思い出しているようですブランチ。 stuffというファイルとブランチの両方があるとします。そして、次のコマンドは、あいまいなようだ:

git checkout stuff 

あなたがファイルまたはブランチをチェックアウトするために求めているかどうかは明らかではありませんので。 --を使用すると、その名前/パスでファイルをチェックアウトするように明示的に指示します。したがって、この場合には、次のコマンドは、ブランチとstuffと呼ばれるファイルがチェックアウト許可:

git checkout stuff  # checkout the branch stuff 
git checkout -- stuff # checkout the file stuff 

git checkout <name>が本当に枝のためのもの、しかし、Gitのブランチを見つけることができない場合Gitの構文が緩和され、さ。なお、ファイルを探します。密接に関連

Git change branch when file of same name is present

+0

私は本当に 'git co .' aka' git reset HEAD -hard'という意味でした。しかし、私は過去2年間これらの2つのダッシュを余計に入力していたと思います:) – Laoujin

+0

@Laoujin 'git co .'は間違いなく' git reset -hard'ではありません。これらの2つのコマンドは異なることを行います。 – poke

7

--スタンドアロン引数(別の引数のすなわち一部ではない)としては、それに続く何が引数ではないことを示すために多くのUNIXコマンドラインプログラムによって使用されます。

なぜですか?このケースでは、名前が--で始まるパスがある場合に使用されています。パスは独自の引数として解釈されるべきではありません。

つまりgit checkout -- --mydirectory--を指定するとエラーが発生します。

関連する問題