[解決済み] 既に存在するかどうかを確認せずに、別のブランチに切り替える(存在しない場合は作成する)?
質問
git checkout -b foo
スイッチオン
foo
ブランチをオンにしますが (存在しない場合でも作成されます)、もし
foo
ブランチがすでに存在する場合は、このようなエラーを投げます。
fatal: A branch named 'foo' already exists.
次のようなチェックをするコマンドは何ですか?
-
ブランチが既に存在する場合、そのブランチに切り替えるだけ (
git checkout foo
) -
ブランチが存在しない場合は、ブランチを作成し、その上でスイッチします (
git checkout -b foo
)
どのように解決するのですか?
2019年第3四半期更新(Git 2.23):現在、実際にあるのは
git switch
コマンド
!
git switch -c aBranch
同様のエイリアスが必要ですが。
switchoc = "!f() { git switch $1 2>/dev/null || git switch -c $1; }; f"
switchoc (for "switch or create")というエイリアスの名前に注意してください。
として
jar
が指摘した
コメントで
:
2021年にこれを試す人は、以下のことに注意してください。 をシャドウすることはできません。
git
コマンドをエイリアスでシャドウすることはできません。 .
このためgit switch
はgit
コマンドを使用する場合、このエイリアス(名前は "switch
という名前)は機能しません。エイリアスには、"switchit
というように、エイリアスに独自の名前を付ける必要があります。
ブガサック のエイリアスは、コメントで後述するように、より安全です (ベースは Jiří Pavelka 's 答え ):
switch = "!f() { git checkout $1 2>/dev/null || git checkout -b $1; }; f"
git switch abranch
オリジナルの回答(2014年) 試してみるとよいでしょう。
git checkout -B foo
から
git checkout
マンページ
:
もし
-B
が与えられると<new_branch>
が存在しない場合は作成され、そうでない場合はリセットされます。これは、トランザクション的に
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
後述するように、ブランチをリセットしてしまうため、使用には注意が必要です。
もし、このコマンドで間違ってブランチをリセットしてしまった場合。
を実行すると、簡単に以前の状態に戻すことができます。
を使うことができます。
git reset HEAD@{1}
関連
-
Git: bash: cd: 引数が多すぎる
-
[解決済み] git rebase の取り消し
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Git のローカルコミットを破棄する
-
[解決済み] 異なる2つのブランチのファイルを比較する方法
-
[解決済み] リモートにないトラッキングブランチを削除
-
[解決済み] 複数のコミットを1つのスクワッシュされたコミットとして別のブランチにマージするにはどうすればよいですか?
-
[解決済み] git のコミットを削除しても、変更は維持できますか?
-
[解決済み] Gitによるhotfixブランチのfeatureブランチへのマージ
-
[解決済み】ブランチを指定せずにgit pushした場合のデフォルトの動作
最新
-
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で「このリポジトリでは別のgitプロセスが実行されているようです...」と表示される問題
-
解決策正しいアクセス権を持っていることと、リポジトリが存在することを確認してください。
-
Git: bash: cd: 引数が多すぎる
-
[解決済み] git reset」を元に戻すには?
-
[解決済み] あるブランチの内容を新しいローカルブランチにコピーするにはどうすればよいですか?
-
gitの利用(ssh鍵の作成とgithubの利用)。
-
[解決済み] キーフィンガープリントが原因でHerokuにプッシュできない
-
[解決済み] Gitの本番環境へのプッシュ(FTP)
-
[解決済み] なぜGitでコミットする前にステージが必要なのですか?
-
[解決済み] gitで、stashを適用せずに、追跡されていないstashedファイルを表示する方法はありますか?