2018年2月2日金曜日

gitのtag一括削除コマンド教えてもらったけど、しっかり理解していなかったからちょっと試してみた

リモートで削除された複数のタグを一括削除するには、以下のコマンドで出来ると教わりました。
$ git fetch origin --prune 'refs/tags/*:refs/tags/*'
'refs/tags/*:refs/tags/*'についてしっかり理解していなかったのでいろいろ試してみました。
あとでやったことを見返すためにログを張っておこうと思います。
※タグと言いつつ、ブランチで試しています。

今の状態

$ git --version
git version 2.14.1

$ git remote
origin

$ git branch -a
  fuga
  hoge
  mas
* master
  pyo
  origin/HEAD -> origin/master
  origin/fuga
  origin/hoge
  origin/mas
  origin/master
  origin/pyo
以下試した内容を列挙していきます。
※URL等は適当に変更しています。

aaaブランチないからプッシュできない

$ git push origin aaa:iii
error: src refspec aaa does not match any.
error: failed to push some refs to 'https://hogehogehoge/tutorial.git'
コロン区切りの指定している箇所をrefspecと呼ぶみたい。
んで手前をsrcと呼ぶようで。
失敗したので作成されていない。
$ git branch -a
  fuga
  hoge
  mas
* master
  pyo
  origin/HEAD -> origin/master
  origin/fuga
  origin/hoge
  origin/mas
  origin/master
  origin/pyo

hogeブランチからリモートに新しいブランチを作る

$ git push origin hoge:test
Password for 'https://hogehogehgoe':
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create pull request for test:
remote:   https://hogehogheogheoghe/tutorial/pull-requests/new?source=test&t=1
remote:
To https://hogheogheohgoe/tutorial.git
 * [new branch]      hoge -> test
リモートに作ったのでローカルには表示されない。
$ git branch -a
  fuga
  hoge
  mas
* master
  pyo
  origin/HEAD -> origin/master
  origin/fuga
  origin/hoge
  origin/mas
  origin/master
  origin/pyo
  origin/test
リモートから持ってくると出てきた。
$ git checkout -b origin/test
Switched to a new branch 'origin/test'
$ git branch -a
  fuga
  hoge
  mas
  master
* origin/test
  pyo
  origin/HEAD -> origin/master
  origin/fuga
  origin/hoge
  origin/mas
  origin/master
  origin/pyo
  origin/test

無いをプッシュで消える。

$ git push origin :test
Password for 'https://hogehogheoghoe':
To https://hgoehogheohgegheo/tutorial.git
 - [deleted]         test
$ git branch -a
  fuga
  hoge
  mas
  master
* origin/test
  pyo
  origin/HEAD -> origin/master
  origin/fuga
  origin/hoge
  origin/mas
  origin/master
  origin/pyo

まとめ

無いをpullするとどうなるかもやってみたのですが、
動きがよくわからなかったです。マージっぽい感じもしましたが・・。
とりま、やってみたことは以上です。
gitって奥が深いですね。また暇を見つけていろいろ試してみたいです。