2

私は現在、以下のように名前にマスターを含む2つのシンボリック参照を持っています

git ls-remote git@github.com:company/project.git master
9547e4ba01d67e1ff3xxxxxd5110eaaf2f48    refs/for/master
06106b7f1005dbb9f1xxxxxxxx456d2be84346c refs/heads/master

refs/for/master を削除または名前変更して、ls-remote コマンドで次のような結果が 1 つだけ得られるようにするにはどうすればよいですか?

git ls-remote git@github.com:company/project.git master
06106b7f1005dbb9f1xxxxxxxx456d2be84346c refs/heads/master
4

1 に答える 1

3

オプション 1: 参照の削除

参照を削除する場合refs/for/masterは、リモートから削除するだけです (次のいずれかを使用)。

git push git@github.com:company/project.git :refs/for/master
git push git@github.com:company/project.git --delete for/master

オプション 2: 参照の名前を変更する

これは名前を変更する 1 つの方法ですが、かなり手間がかかります。まず、参照するオブジェクトをフェッチする必要がありますrefs/for/master。私が知っている唯一の方法は、レポを編集.git/configして取得することです。

便宜上、ローカル リポジトリにgit@github.com:company/project.git呼び出されたリモートとして追加するとします。origin

git remote add origin git@github.com:company/project.git

fetch次に、ローカル クローンの.git/configファイルで構成を次のようにセットアップしたとします。

[remote "origin"]
    url = git@github.com:company/project.git
    fetch = refs/for/*:refs/remotes/origin/for/*

次にgit fetch origin、参照の名前を別の名前に変更して、再度プッシュできます(ただし、古い参照は削除する必要があります)。

git push origin :refs/for/master origin/for/master:for/master

:refs/for/master古い参照を削除し、origin/for/master:for/masterその参照の古いコピーを新しいリモート参照としてプッシュしますfor/master

fetchリモート リポジトリの refspec 設定の詳細については、無料のオンライン Pro Git ブックの 9.5 Git Internals - The Refspecを参照してください。

于 2013-08-14T02:44:32.250 に答える