ariyasacca

2004|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|08|09|10|

2013年02月19日 (火) [長年日記]

[Software]Gitのローカルブランチ、追跡用ブランチ、リモートブランチの削除とタグ操作

覚えた事を忘れないように書いておこうシリーズ。

ローカルブランチの削除

# branchnameブランチを削除
$ git branch -d branchname

「まだマージされてないコミットがあるぞ!」と怒られる時は-Dオプションを指定する。

# branchnameブランチを強制的に削除
$ git branch -D branchname

追跡用ブランチの削除

リモートのoriginやupstreamを追いかけていて、既にリモートで削除されているブランチを追跡していたローカルブランチ。これは手で消さないとずっと残っている。

# branchnameブランチの追跡用ブランチを指定して削除
$ git branch -r -d origin/branchname
# リモートで削除済みのブランチに対応する追跡用ブランチをまとめて消す
$ git remote prune origin
 * [pruned] origin/develop-X.Y.Z
 * [pruned] origin/release-X.Y.Z

リモートブランチの削除

空のローカルブランチを指定してリモートに押し付けるイメージで覚えてる。

# リモートにあるbranchnameブランチを削除
$ git push origin :branchname
# 新しめのバージョンでは以下のオプションでも同等の操作となる
$ git push --delete origin branchname

タグ関連の操作

ブランチとほぼ同じ感覚なんだけど、異なる点も幾つかある。

# ローカルで打ったタグをリモートにも反映
$ git push origin v-X.Y.Z
# 一度打ったローカルのタグを消す
$ git tag -d v-X.Y.Z
# リモートのタグを消す
$ git push origin :v-X.Y.Z
# 新しめのバージョンでは以下のオプションでも同等の操作となる
$ git push --delete origin v-X.Y.Z

一度ハマったのが、「既にリモートからfetchされているタグと、新しくリモートにpushされた同名のタグが違う。どうやって反映するんだ?」というケース。

これはローカルのタグを一旦消してしまえば良いみたい。もっとスマートなやり方あるのかな。

# 今ローカルにあるv-X.Y.Zとリモートに同名のv-X.Y.Zで打ってあるコミットが異なる
$ git tag -l
v-X.Y.Z
# 一旦ローカルのv-X.Y.Zを削除
$ git tag -d v-X.Y.Z
Deleted tag 'v-X.Y.Z' (was abcd123)
# 改めてfetch
$ git fetch origin
 * [new tag] v-X.Y.Z -> v-X.Y.Z

タグを打つコストが安くて、一度打ったタグを消してコミットの位置を打ち直しが簡単に出来てしまう点は、Subversionから移った人が驚くところだと思う。

参考情報

各種ブランチの名称と役割については、以下のエントリがとても参考になる。

[ツッコミを入れる]

最近のツッコミ

  1. 同時期にYJを通過した者です (2025年10月22日(水)00:24)「めっちゃ全文共感でした! 宮坂さんサイコー! ウォーターサーバーありがとう! 迷ったらワイルドな方を選べ!」
  2. 雷悶 (2025年10月21日(火)17:39)「>yuskato きっとお前はわしが育てた! (と言いたいがメンターだった人は他にもいる)」
  3. yuskato (2025年10月21日(火)16:51)「自分もはてブから来ました!度々お世話になりました!雷悶さんが最初のメンター(のうちの一人)だったのはほんとに僥倖でし..」

参号館 の中の 日記(ariyasacca)

トップ «前の日記(2013年02月11日 (月)) 最新 次の日記(2013年02月21日 (木))» 編集
Generated by tDiary version 5.2.3
Powered by Ruby version 3.0.2-p107

AltStyle によって変換されたページ (->オリジナル) /