私はgit-svnをしばらく使っています(私のチームの誰もがsvnを直接使っています)。私たちはgitを使い始めることにしました。これを行うために、私はのgit-svnのようにのようなの私の「側」であるGitのレポを使用:git-svnからgitに移行した後の偽のリモートブランチを削除するにはどうしたらいいですか?
$ git remote add origin [email protected]:mycompany/myproject.git
$ git push -u origin master
これは、罰金行ったが、プロセスが完了したとき、私はgitのすべてのこれらのばかげた枝を保持していました-svnは私が最初にそれを使い始めたときに作りました。 gitはもはや彼らがブランチであることを認めないでしょう。ここに私のリストには、ように見えたものです:彼らは(主に)どこから来たのか、私は知っていたが、今私もそれらを削除することはできませんけれども
$ git branch -r
domain_integration
dot-org
[email protected]
email-edit-page
origin/account-integration
origin/master
origin/stable
prototype_to_jquery-1.1.0
[email protected]
tags/development-1.1.0.0
tags/pre-2011-02-08
tags/production-1.0
tags/stable-1.0.0
tags/stable-1.0.1
tags/stable-1.1.0
tags/stable-1.1.0.1
trunk-stash
これらは、迷惑でした。これが起こる:
$ git branch -d trunk-stash
error: branch 'trunk-stash' not found.
私は.git /レフリー/リモコンに入るとちょうどそれらを削除することによって、これらのいくつかを修正することができましたが、ほんの数がありました。私が見つけることができる唯一の他の場所は.git/info/refsです。これは次のようなものです:
...
7788d300f0d4370d65a3ccf3e47d90f7fb16b0b4 refs/remotes/tags/stable-1.0.0
aace34d6745080ce2b6b29e927f5d1b050b99511 refs/remotes/tags/stable-1.0.1
58bd2ac23d5979ff61bd6305df18f8a5da50f888 refs/remotes/tags/stable-1.1.0
644fd55fcdf2569305cdbe0b6fefb9f247625658 refs/remotes/tags/stable-1.1.0.1
bc8e9f9177c9612aceb55624adea1b02e9e8620f refs/remotes/trunk
69493e14345e6a7a4db324935bccd6393f201da4 refs/remotes/trunk-stash
25b7024f6c1d38c10400b2c2e7b446aae1e84e06 refs/stash
...
これはちょうど最後のコミットでブランチに関連付けられていると仮定します。 「偽の」ものを削除するのは理にかなっていますか?これは何か壊れますか? (動作しますか?)
このコマンドでリモートブランチを一覧表示しています。 'branch -d'を使ってリモートブランチを削除することはできません。歴史的なsvnブランチをすべて削除してもよろしいですか? (あなたはおそらくそれらを '.git/packed-refs'で見つけるでしょう) – knittl
はい、それらはリモートブランチです。私はそれを言及すべきであり、少し違った質問をしました。どうやってgitに存在しなくなったことをgitに伝えるのですか?あなたはそれらが.git/packed-refsであることについて正しいです、多分私はそこでそれらを削除する必要があります。または、データベースを圧縮できるようにすると、それらは消えるでしょうか? (私が最初にこれをしなかったのは、特定の状況では、あなたが奇妙な場所にいるときに物事を失うことがあることを知っているからです。私はいくつかのことをまっすぐにすると、それについてもっと自信があります。) – cesoid
'git gc'を実行すると、それらは消えません。 @ MagnusSkogの回答は正しいものでなければなりません:もしそれらがリモートに存在しなければ、getは削除されます。実際には、_really_、___really___はあなたがそれらをもう必要としないと確信していれば、refs-packedファイルから直接削除することができます。 – knittl