ariyasacca

カテゴリ一覧

Biz | SF | Software | tDiary | Web | ゲーム | サバティカル | スポーツ | ミステリ | メタル | 健康 | 投資 | 携帯 | 時事ネタ | 死生観 | 資格 | 雑記
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|

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. ともお (2024-05-29(水)20:59)「真上からの恐怖🫨」
  2. いちごみるく (2024-05-29(水)20:59)「🩸」
  3. レモン (2024-05-29(水)20:59)「レモン」

参号館  の中の  日記(ariyasacca)

トップ «前の日記(2013-02-11 (月)) 最新 次の日記(2013-02-21 (木))» 編集