1

プロジェクトの開発者を募集する予定です。可能であれば、引き続き git リポジトリを使用したいと考えていますが、履歴の一部に (暗号化を介して) アクセスできないようにして、自分だけがアクセスできるようにしたいと考えています。その理由は、開発中にアプリにハードコーディングしたアカウント パスワードなど、頭の中で一掃した特定の機密情報が履歴にあるためです。なんらかの認証なしで他の開発者にこれを見せたくありません。

明らかな解決策は、このヘッドから新しいレポを作成することですが、可能であれば完全な履歴を保持したいと思います。これには、後で使用する可能性のあるブランチがあるためです。

4

3 に答える 3

6

Git リポジトリの場合、履歴の一部だけを非表示にすることはできません。Git の仕組みにより、各コミットには以前のコミットのハッシュが含まれるため、Git リポジトリを使用するには完全な履歴が必要です。

ただし、いくつかのオプションがあります。1 つは、現在のコンテンツで新しいリポジトリを開始し、古いリポジトリを維持することです。その後、古い履歴にアクセスする必要がある人に古いリポジトリを与えることができます。両方のリポジトリの完全な履歴を引き続き表示できます。これを行うには、古いリポジトリと新しいリポジトリのそれぞれにリモートを追加し、使用git replaceして古いリポジトリの最後のコミットを新しいリポジトリの最初のコミットにアタッチします。詳細については、この質問への回答を参照してください。

別のオプションは、履歴をフィルタリングすることです。履歴内のコミットごとにスクリプトを実行するために使用できますgit filter-branch --tree-filter。これにより、パスワードのすべてのインスタンスが「password」などに置き換えられます。これにより、すべてのコミットが新しいコミット ID を取得しますが、完全な履歴が保持されます。詳細については、この質問への回答を参照してください。

これらのオプションの両方を使用すると、パスワードを明らかにすることなく、完全な履歴を保持できます. 実際のコミット ID が変更される場合、すべての作業リポジトリが古いものではなく新しいものからチェックアウトされていることを確認する必要がある場合に注意してください。そうしないと、古い履歴を誤っていずれかにプッシュする可能性があります。あなたの新しいリポジトリ。念のため、古いレポにあるパスワードを変更することをお勧めします。一度そこにあると、誤ってそれらを明らかにするのは簡単かもしれません.

于 2012-11-24T15:23:01.930 に答える
1

git データ モデルのため、これは実際には不可能です。ただし、試すことができること:

  1. そのような機密データを扱うすべてのコミットを特定します。

  2. これらのコミットに対して git rebase -i を実行し (リポジトリのサイズによっては、このインタラクティブなリベースは何千ものコミットに及ぶ可能性があります)、それらのコミットを HEAD の上に置きます。

  3. それらのコミットをリセットする

  4. 勢いよく押す

(これにより履歴が変更されますが、正しく行われた場合は社番号にのみ影響します)

すべてのブランチに対してこれを行う必要があり、これは本当にすぐに手に負えなくなります。そのため、パスワードを変更するという Gumbo の提案に同意します。

于 2012-11-24T15:21:16.677 に答える
0

これが最善の解決策かどうかはわかりませんが、私だったら、新しいレポを作成し、それらの間で統合を行います。Github は、これを簡単にするために長い道のりを歩んできました。

于 2012-11-24T14:52:52.493 に答える