1. ホーム
  2. ギット

[解決済み】GitHubでブランチの名前を変更する。

2022-03-25 10:51:29

質問

を使ってローカルブランチの名前を変更したところ

git branch -m oldname newname

が、これはローカルバージョンのブランチの名前を変更するだけです。GitHub にあるブランチの名前を変更するにはどうすればいいのでしょうか?

解決方法は?

前述の通り、GitHub上の古いものを削除して再プッシュします。ただし、使用するコマンドは必要以上に冗長です。

git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local

コマンドを少し分解してみると git push コマンドは、基本的に

git push <remote> <local_branch>:<remote_branch>

つまり、local_branch を指定せずにプッシュすることは、本質的に "自分のローカルリポジトリから何も取得せず、それをリモートブランチにする"ということを意味します。 私はいつも、これはまったくもって不格好だと考えていましたが、それがこの方法なのです。

現在 Git 1.7 リモートブランチを削除するための別の構文があります。

git push origin --delete name_of_the_remote_branch

コメントで@void.pointerさんがおっしゃっているように

なお、2つのプッシュ操作を組み合わせることができます。

git push origin :old_branch new_branch

これは、古いブランチの削除と新しいブランチのプッシュの両方を行います。

これは、リモート、元のブランチ、そして新しいブランチの名前を引数にとるシンプルなエイリアスにすることができます。 ~/.gitconfig :

[alias]
    branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"

使用方法

git branchm origin old_branch new_branch

シェルコマンドの位置指定引数は、古い (2.8 より前の?) バージョンの Git では問題があったので、エイリアスは Git のバージョンによって異なるかもしれません。参照 本論 をご覧ください。