1. ホーム
  2. git

[解決済み] ドット付きGitチェックアウト

2022-02-16 19:07:56

質問

次の違いは何ですか? git コマンドを使用します。

git  checkout branch
git  checkout branch .
git  checkout  .  #<-- used at the branch

なぜ私は最初のものと異なるフォルダに異なるブランチをチェックアウトすると、私はいくつかのファイルを逃した。
しかし、私は2番目のコマンドを使用しているとき、すべてが大丈夫です?

どうすればいいですか?

git checkout (1) は、パス指定があるかないかで、まったく異なる動作をします。

  1. とは ブランチ指定子のみ ( git checkout branch ) を指定すると、現在の作業ディレクトリが指定したブランチに切り替わります。 可能であればローカルの変更を維持し、そうでなければ失敗する . もし、すでに branch を実行しても、何も起こりません。作業ディレクトリの中で HEADbranch で、それらのいずれかがローカルな変更 (インデックス付けされているかどうかに関わらず) を行っている場合は失敗します。
  2. パス指定子 にマッチするファイルはすべて上書きされます(すべてのファイルが . ) を指定された内容で表示します。
    1. パス指定子のみ ( git checkout . ) は、インデックスからコンテンツを書き込みます。つまり、ステージされていないローカルの変更を取り消すのです。ステージされた変更を取り消すには git reset というパス指定があります。
    2. With ブランチとパスの両方の指定子 ( git checkout branch . を指定すると、指定されたリビジョンにコンテンツを書き込みます。それは ない を修正します。 HEAD を指すので、もし branch とは異なります。 HEAD の場合、その後にステージングされていない変更が発生します。

なお 男性ページ b/--branch オプションと -p/--patch オプションを使用した場合の追加ケースを区別しているが、これらはほとんど上記のケースの単純な拡張である。