[解決済み】gitで他のブランチに切り替えるにはどうしたらいいですか?
質問
次のうち、正しいのはどれでしょう?
git checkout 'another_branch'
または
git checkout origin 'another_branch'
または
git checkout origin/'another_branch'
そして、両者の違いは何でしょうか?
解決方法は?
もし
another_branch
はすでにローカルに存在し、このブランチにいない場合は
git checkout another_branch
はそのブランチに切り替わります。
もし
another_branch
は存在しないが
origin/another_branch
がある場合は
git checkout another_branch
と同じです。
git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch
. それは
another_branch
から
origin/another_branch
を設定し
origin/another_branch
の上流として
another_branch
.
どちらも存在しない場合
git checkout another_branch
はエラーを返します。
git checkout origin another_branch
はほとんどの場合、エラーを返します。もし
origin
がリビジョンで
another_branch
がファイルである場合、そのリビジョンのファイルをチェックアウトしますが、おそらくそれは期待したものではありません。
origin
は、主に
git fetch
,
git pull
と
git push
をリモートとした場合、リモートリポジトリへのURLのエイリアスになります。
git checkout origin/another_branch
は、以下の場合に成功します。
origin/another_branch
が存在します。どのブランチにもなく、デタッチド HEAD 状態であることがリードされます。新しいコミットをすると、そのコミットは既存のどのブランチからも到達できなくなり、どのブランチも更新されなくなります。
アップデイト :
2.23.0がリリースされたので、このバージョンでも
git switch
を使用して、ブランチの作成と切り替えを行います。
もし
foo
に切り替えてみてください。
foo
:
git switch foo
もし
foo
が存在せず
origin/foo
が存在する場合は
foo
から
origin/foo
に切り替え、さらに
foo
:
git switch -c foo origin/foo
# or simply
git switch foo
より一般的には、もし
foo
が存在しない場合は
foo
を既知の ref やコミットから取得し、その後
foo
:
git switch -c foo <ref>
git switch -c foo <commit>
Gitlab と Github で同時にリポジトリを管理する場合、たとえばローカルリポジトリが2つのリモートを持つことがあります。
origin
をGitlab用に、そして
github
をGithubのために使用します。この場合、リポジトリには
origin/foo
と
github/foo
.
git switch foo
は文句を言う
fatal: invalid reference: foo
というのは、どの文献からのものなのかがわからないからです。
origin/foo
または
github/foo
を作成するために
foo
. で指定する必要があります。
git switch -c foo origin/foo
または
git switch -c foo github/foo
を必要性に応じて選択します。もし、両方のリモートブランチからブランチを作成したい場合は、新しいブランチに区別できる名前を使用した方が良いでしょう。
git switch -c gitlab_foo origin/foo
git switch -c github_foo github/foo
もし
foo
が存在する場合、再作成/強制作成を試みます。
foo
から(またはリセットして
foo
に変更し、その後、既知のリファレンスまたはコミットを
foo
:
git switch -C foo <ref>
git switch -C foo <commit>
と等価である。
git switch foo
git reset [<ref>|<commit>] --hard
既知のrefやcommitのdetached HEADに切り替えてみてください。
git switch -d <ref>
git switch -d <commit>
ブランチを作成するだけで、切り替えを行わない場合は、以下のようにします。
git branch
の代わりに 既知の参照やコミットからブランチを作成するようにしましょう。
git branch foo <ref>
git branch foo <commit>
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] ファイルをリセットしたり、特定のリビジョンに戻したりするにはどうすればよいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Git サブモジュール head 'reference is not a tree' エラー
-
[解決済み】GitHubのメッセージの意味: メールのプライバシー制限のためプッシュが拒否されました。
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
[解決済み】git push >> fatal: 設定されたプッシュ先がありません。
-
[解決済み] リモートから<branch name>とマージするように構成が指定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] git が「Pull is not possible because you have unmerged files」と表示するのはなぜですか?
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] GitHubです。パーミッションが拒否されました (公開鍵)。
-
[解決済み] Gitのプッシュエラーです。Unable to unlink old (Permission denied)です。
-
[解決済み】Gitで現在の変更を別のブランチにコミットする方法【重複あり