Gitの小ネタおれおれAdvent Calendar 2022 – 10 日目
ここまでのあらすじ:別ブランチで作業完了して push したところでブランチ名のチケット番号が間違ってるのに気づいてしまった……。
元々間違っていたかもしれないし、アップロードしたときに打ち間違えたのかもしれないです。どっちでも大丈夫。
連携は自動化しとけというのは置いておいて、とにかく修復作業に入ります。
- 誤:
PRJ-123NG - 正:
PRJ-128OK
pushしたもの(リモートのブランチ)を削除- ローカルのブランチの名前を修正
- 正しい名前で改めて
push
リモート(サーバー)のブランチを削除
直接名前を変えられないみたいなのでいったん削除します。
$ git push --delete origin PRJ-123NG
origin がリモートの名前、PRJ-123NG が(間違っていた)ブランチの名前です。
別解として git push origin :<ブランチ名> というのもあるんですが、: て何だよって感じなので --delete の方がおすすめです。
以下 git push --help より。
`-d`, `--delete`
All listed refs are deleted from the remote repository. This is the same as prefixing all refs with a colon.
ローカルのブランチの名前を修正
$ git switch PRJ-123NG
$ git branch -m PRJ-128OK
ちなみに変更は git branch -m <今の名前> <新しい名前> でもできて、うち <今の名前> の部分を省略すると現在ブランチになります。
正しい名前で改めて push
$ git push -u origin HEAD
-u, --set-upstream
ローカルのブランチとリモートのブランチとを紐づけます。git push 時に毎度リモート名やブランチ名を入力しなくても良くなるので便利。
紐づいてないと指定しろエラーになります。それはそう。
$ git push
fatal: The current branch xxx has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin xxx
HEAD
現在ブランチを指してくれます。これなら長い名前を打ち間違える心配がなくて簡単。
git push --help の EXAMPLES に載ってます。
git push origin HEADA handy way to push the current branch to the same name on the remote.