Table of Contents
リモートにtagと同じ名前のブランチが存在する場合
remote branchの消去など同名のリモートブランチを対象にコマンド操作すると以下のようなエラーが発生します:
1
2
3
% git push origin :<tag or branch>
error: src refspec <name> matches more than one
error: failed to push some refs to <Remote git url>
リモート側だとlocalのときと異なりdeleteのコマンドが同じでnameコンフリクトが発生してしまうことが原因です. 対処方法はremoteやブランチ/tag消去が考えられますが, それぞれのコマンドは以下です
1
2
3
4
5
6
7
8
9
10
## localでのbranch/tagの除去
% git tag -d <tag>
% git branch -d <branch>
## remote branch自体を消去したい場合
% git push origin :refs/heads/<branch_name>
## tagを慶したい場合
% git push origin :refs/tags/<tag_name>
% git push origin --delete refs/tags/<tag_name>
ローカルにあるbranch/tagをmergeさせたいとき
local branchでmergeを行う場合もremoteと同様の問題が以下のように発生するリスクがあります.
1
2
3
% git merge <tag or branch name>
warning: refname 'name' is ambiguous.
warning: refname 'name' is ambiguous.
この場合も, remoteのときと同様にtags/
or refs/heads/
でどちらを参照しているかcommandへ明示的に情報を渡すことで解決することができます.
1
2
3
4
5
## tagをmergeさせたい場合
% git merge tags/<tag-name>
## branchをmergeさせたい場合
% git merge refs/heads/<branch-name>
Column: tagやbranchの情報をどこで管理しているのか?
gitではtagやremote, local branchの情報を.git/refs/
で管理しています.
そのため, refs/heads/
でbranchを指定しているのかどうかを認識することができます.
1
2
3
4
5
% ls -l .git/refs/
total 12
drwxrwxr-x 2 kirby kirby 4096 Aug 30 11:56 heads/
drwxrwxr-x 3 kirby kirby 4096 Jul 23 04:08 remotes/
drwxrwxr-x 2 kirby kirby 4096 Jul 23 04:08 tags/
統計
Python
math
Linux
Ubuntu 20.04 LTS
Shell
English
git
方法論
Ubuntu 22.04 LTS
統計検定
競技プログラミング
フーリエ解析
前処理
SQL
coding
コミュニケーション
Network
ssh
将棋
Data visualization
Docker
Econometrics
VSCode
statistical inference
GitHub Pages
apt
development
システム管理
Coffee
cloud
数値計算
素数
Book
Font
Metrics
Poetry
Ubuntu 24.04 LTS
architecture
aws
shell
systemctl
テンプレート
データ構造
ポワソン分布
会計分析
文字コード
環境構築
論文
App
Bayesian
Dynamic Programming
Keyboard
Processing
R
Steam
filesystem
quarto
regex
(注意:GitHub Accountが必要となります)