2011-09-26 5 views
11

当社のGitのレポは、もはや必要とされ、その歴史の中で大きなファイルの束を持っています。私は、フィルタ分岐技術を使用してそれらを削除したいプロのGitで説明:フィルタ分岐後に変更Gitの歴史の上に皆をリベース

http://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery

、ここで説明したように、私はその後、私たちの共有レポにこれを送信するためにgit push --force allを使用します:

Update a development team with rewritten Git repo history, removing big files

BUT。 Pro Gitは、私が歴史を変えているので、誰もがリベースする必要があると言います。私たちは、たいていリバースを控えめに使用しました。これは、通常、マージする別の方法です。誰もが再クローンできるようにすることはできますが、それは最後の手段です。いくつかの開発者はローカルブランチを持ち、変更したいと思っています。

ので:何まさに誰もが新しく変更された共有レポ上にリベースするために私たちのローカルリポジトリに行う必要がありますか?追跡ブランチごとに一度それを行う必要がありますか?私たちのレポは起点と呼ばれ、マスターブランチはマスターです。ステップバイステップを欲しければ(そしてもしあれば私はそれを愛しています)。ここで

答えて

3

はオプションです。

  • (代わりにあなたの元masterの)rebased_masterと呼ばれる枝の上にあなたのリベースマスターを作成します。
  • あなたはよりそのブランチをプッシュすると、すべての開発者がそれをプルダウンしrebased_masterに地元の支店をリベースしています。それらがrebaseの前の同等のコミットからそれらをリベースし、削除するファイルを変更しなかった場合、すべてであるべきです。私はこれをテストしていませんので、あなたがあなたのレポのコピーを持っていることを確認してください:誰もがrebased_masterに自分のdevの枝を移動した後
  • 、あなたの元mastermoverebased_mastermaster

ノートを削除することができます何かがうまくいかない場合に備えて復元する。

+1

これは正しく聞こえます。実際には動作した後、午前中に受け入れます! –

+3

だから?それは動作しますか?その朝は私が推測した通りです... – marton78

14

キーは彼らのリベースをやった後までmasterに元の参照を失わない、個々の開発者のためです。これを行うために、彼らは、その後、各地域の支店のために、強制的にプッシュした後fetchないプル)を行うのですかいる:

git rebase --onto origin/master master <local_branch> 

をそれが終わっていますとき、彼らはmasterをチェックアウトしてそれを更新することができます:

git pull --force 
関連する問題