もともとgit-svnを使用して作成されたgitリポジトリがあります。これで、プッシュ先のgitサーバーがあり、svnリポジトリが失われました。svnリモートを削除できますか?どのように?
4 に答える
ファイルを編集して.git/config
、削除するリモートに関連付けられているセクションを削除できます。
削除する行は、おそらく次のようになります。
[svn-remote "svn"]
url = url-of-svn-repository/trunk
fetch = :refs/remotes/git-svn
これにより、リモートがGitから削除されますが、Gitコミットとに保存されているSVNコミットの間には引き続き関係があります.git/svn
。すべてのSVNリモートを削除したい場合は、このディレクトリ全体を削除できます。1つのSVNリモートだけを削除して他のリモートを保持したい場合は、ディレクトリ構造を確認し、削除するリモートに関連付けられているものだけを削除する必要があります。
ほとんどの*nixシェル、bashまたはmingw32を介してそれを行う:
cd ~/your_repo
git config --remove-section svn
または、構成を表示するときにあるセクション(cat .git/config
)。たとえば、次の行は、Ericのソリューションで説明されているのと同じ構成セクションを削除します。
git config --remove-section svn-remote.svn
.git
次に、フォルダー内のすべてのsvnのもの(svn、logs、およびrefs)を削除します。これはセルゲイが示唆していることでもあります。
rm -rf .git/svn .git/{logs/,}refs/remotes/{git-,}svn/
ちょうど良い測定のためのガベージコレクション:
git gc
エリックの答えは正しいですが、完全ではありません。ラファエル・ラポソのコメントの後でも。新しい回答を投稿するのではなく、回答にコメントできればいいのですが、50の評判に達するまでコメントできないというルールがあります。
追加は次のとおりです。
find .git -type f -exec grep -nH git-svn "{}" \;
これらの2つのファイルに参照があることを示しました。
./.git/info/refs:4:fd34a5c...8073f3 refs/remotes/git-svn
./.git/packed-refs:5:fd34a5...cd6c33 refs/remotes/git-svn
それらの参照を削除するまで、git-svnが実行しているのを見ることができましたgit log
ローカル設定がなく、ディレクトリ内での煩わしさを解消したい場合は.git
、gitリポジトリをgitリモートから新しいディレクトリに複製し、古いディレクトリを削除するだけです。
いくつかの単純なローカル構成(たとえば、グローバル構成とは異なるユーザー/電子メール)がある場合は、これを実行し、クローン作成後にローカル構成を復元する方がおそらく簡単です。