2017-01-10 6 views
0

私はTFSサーバをGIT(Bitbucket)サーバに移管しました。Gitリポジトリをクリア

私たちは現在、git-tfsを使用していますが、移行する前にいくつかのテストを行っています(ジーンキンの設定、すべてが正しく転送されたことを確認するなど)。

問題は、以前の実行時に既にたくさんのものが入っているリポジトリを持っているため、git pushコマンドを実行できないようになっていることです。

リポジトリを「リセット」する方法はありますか(コミットしたことがない場合など)?それを削除しないで?

私はこれを見つけました:Clear git repository on Bitbucket?しかし、問題は私が6年以上の仕事をしており、60以上の支店を持っていることです。

私はリポジトリを削除することはできません。私たちはすでに多くのものを設定しています(フック、ジェンキンとの接続など)。

+0

* ... 60以上のブランチがあるので、ひとつずつきれいにすることはできません。*スクリプトを作成すると何が問題になりますか? – Leon

+0

@リオン私は提案をすることができますが、以前のインポートが正しく機能しなかったか、または(ゴミ収集されていない)明確ではないものが残っている可能性がありますか? – J4N

答えて

1

これは実際にTFSバージョン/ bitbucketに依存します。すべてのブランチとタグを削除し、マスターをきれいなスレートを得るための最初のコミットにリセットすることができます。しかし、あなたのTFSサーバーのバージョンによっては、実際には "ゴミ"が収集されないかもしれません。私はBitBucketのガベージコレクションポリシーについてよく分かりません。

Gitガベージコレクションは、TFS 2015アップデート3で導入されました。それ以前のバージョンでは、すべての参照を削除したとしても、サーバー上のものは実際にはクリーンアップされません。

クリーンアッププロセスを簡単にスクリプトすることができます。 git fetch --allを使用して、ローカルリポジトリにすべてのブランチ情報があることを確認してから、git branch --list -rを使用してすべてのリモートブランチを一覧表示してください。これにより、これらのブランチを削除し、それらの削除をサーバーにプッシュするスクリプトを簡単に作成できます。

Then use git update-ref refs/heads/master a12d48e2 (insert your own commitish) to reset the master.

次にサーバーにすべてを返信するgit push --force --all

+0

こんにちは、なぜTFSのバージョンが重要であるのか分かりませんが、現在はTFS 2015です。 私は 'git --fetch --all'を実行したときの問題:gitリポジトリを変更します。時間がない?リモートブランチだけを削除するにはどうすればいいですか? – J4N

+0

ちょうど新しいレポでそれをしなさい... – jessehouwing