2009-08-27 20 views
25

私のgit repoには機密上の理由から、現在は削除できない機密パスワードが含まれています。このレポは社内のみであるため、今はすべてOKですが、パートナーと安全に共有できる支店を作成するように求められています。履歴なしのgitブランチ

gitでブランチを作成し、ログを使って検索できない方法でファイルを削除する方法はありますか?

ロングショットのようですが、私は尋ねると思っていました。私が考えることができる唯一の解決策は、機密ファイルなしで新しいgitリポジトリにファイルツリーをコピーすることですが、パートナーの変更をレポにマージする機能を失うことになります。

答えて

29

リポジトリのブランチを作成し、パスワードを編集して、パートナーに与えるリポジトリのシャロークローン(深さ1)を作成することができます。そのクローンに対してパッチやその他のものを作ることはできますが、歴史全体を見ることはできず、どこにでもリポジトリをプッシュできません。彼らが変更を行っているだけなら、これは実行可能な解決策でなければなりません。引き続きそれらからパッチを受け取り、マスターリポジトリに適用することができます。

詳細については、--depthのオプションgit cloneを参照してください。

+0

私は、このソリューションは、ベンの状況のた​​めに良い仕事だと思います。ブランチベースよりも、リポジトリベースでアクセスを管理する方が簡単です。 – Apreche

+4

'git clone --depth 1 [email protected]:project/projectname.git' - コピー&ペースト – YumYumYum

5

使用filter-branch

gitのフィルタ分岐--treeフィルター「RM:

あなたは(機密情報 や著作権の侵害を含む)ファイル を削除したいとし、すべての のコミットからファイル名 '頭部

+0

1.)' --index-filter'はファイルを削除するために '--tree-filter'より速いはずです。 2.)リポジトリを変更したくない場合は、まず新しいブランチを作成して書き換えます。 –

+0

はい、リンク先のドキュメントには様々なテクニックの非常に良い議論があります –

0

私はカップルの回答で刺すでしょう。機密データが含まれていないブランチを作成できると仮定します。あなたは雲をつくり、枝の浅いクローンを作ります。それは歴史を含んでいないので、それから引き出すことはできませんでしたが、それはあなたを形にすることができます。

もう1つは、新しいリポジトリを複製し、gitの削除ツールを使用して機密データを消去することです。これは、最初のパッチとのパッチを除いて相互作用することができないが、すべての履歴を持つ別個のリポジトリを作成します。 1 url_of_your_remote_repository --depth

5

gitのクローンあなたはそれはあなたがこれを使用して、新しいリポジトリを作ることができないことを意味し(浅いリポジトリからクローンやフェッチすることはできません浅いリポジトリの

制限

  • 浅いコピー)

  • git logコマンドを使用して履歴全体を表示できませんでした。

  • あなたのパートナーは、あなたのパートナーの変更が必要な場合、いくつかの変更を加えて "パッチ"としてそれをパートナーに送ることができます。次に、現在の作業ツリー/適用するブランチにそのパッチを適用します。

    More

関連する問題