すでに存在するかどうかを確認せずに、別のブランチに切り替えます(存在しない場合は作成します)。質問する

すでに存在するかどうかを確認せずに、別のブランチに切り替えます(存在しない場合は作成します)。質問する

git checkout -b fooブランチをオンにしますfoo(存在しない場合でも作成されます)。ただし、fooブランチがすでに存在する場合は、次のようなエラーがスローされます。

fatal: A branch named 'foo' already exists.

次のチェックを実行するコマンドは何ですか?

  • ブランチがすでに存在する場合は、それをオンにするだけです(git checkout foo
  • ブランチが存在しない場合は作成してオンにします(git checkout -b foo

ベストアンサー1

2019年第3四半期アップデート(Git 2.23):現在、git switch指示

git switch -c aBranch 

または、ブランチがすでに存在する場合:

git switch aBranch

私は2020年に説明git switchコマンドは「実験的な「名前だけ」であり、今後も存続するでしょう。

ただし、エイリアスが必要になります。初め既存のブランチに切り替え、失敗した場合(ブランチが実際にはない存在する場合、それを作成します。

switchoc = "!f() { git switch $1 2>/dev/null || git switch -c $1; }; f"

エイリアスの名前に注意してください: switchoc (「switch or create」の略)。

その組み合わせgit switch+git switch -c正確にOP が求めているもの。

としてjar指摘したコメント欄:

2021年にこれを試す人は、git既存のコマンドをエイリアスで隠すことはできませんはコマンドな
ので、このエイリアス (名前は " ") は機能しません。エイリアスには、" "などの一意の名前を作成する必要があります。git switchgitswitchswitchit


ブグサチコメントで言及されているエイリアスはより安全です(イジー・パベルカ答え):

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 エイリアスを次のように設定します。

git config alias.switchoc '!f() { git switch $1 2>/dev/null || git switch -c $1; }; f' 

次に、次のように使用します。

git switchoc <branch>

おすすめ記事