1. ホーム
  2. git

[解決済み] Git で同名のファイルがあるときにブランチを変更する

2022-09-18 05:52:40

質問

私の git リポジトリに xyz という名前のファイルがあります。偶然にも、私は xyz という名前のブランチも持っています。現在私はmasterにいますが、私はxyzブランチにチェックアウトしたいと思います。使用するコマンドは簡単です。

$ git checkout xyz

しかし、この場合、ファイルをチェックアウトして xyz を現在の HEAD にチェックアウトしてしまいます。どのようにすれば、私のブランチを xyz ?

どのように解決するのですか?

図にあるように コミット a047faf (git 1.8.4.3+) を試してみるのもよいでしょう。

git checkout xyz --

(注) のエラーメッセージは、2019年第1四半期のGit 2.21でより明確になる予定です。 )

ということが明確になります。 xyz の部分がブランチかコミットであるのに対し -- はパスでなければなりません (ここではパスは指定されていません)。参照 のダブルハイフン規則についてはこちらを参照してください。 .

もし、' -- のように、うまくいく場合といかない場合があります。 なぜ git checkout は <remote_branchname> は新しい追跡ブランチを作成しないのですか? "です。

git checkout name が行います。

  • ローカルブランチまたは明示的なリモートブランチであれば、それに切り替えます。
  • 追跡されたパスである場合、それをリセットします。
  • リモートブランチであれば、追跡ブランチを作成し、それに切り替えます。

そしてその動作はいつも同じとは限りません。それゆえ、' -- ' とすることで、明確な曖昧さ回避を実現しています。


2019年8月更新、Git 2.23以上

git checkout は紛らわしすぎる と置き換えられる。

  • git switch 意味 git switch xyz があっても動作します。 xyz ,
  • git restore 意味 git restore xyz はブランチがあっても機能します。 xyz .

さらに、"で説明しているように なぜ私の Git リポジトリは切り離された HEAD 状態になったのですか? の説明のとおり、もう予期しない HEAD の切り離しはありません。