Дублировать git-репозиторий без истории и все еще совместимы для объединения двумя способами? - PullRequest
0 голосов
/ 24 июня 2018

У меня есть original хранилище, в котором жестко закодирована конфиденциальная информация о первых фиксациях в истории.

Я хочу создать new репозиторий из этого, где другие разработчики могут работать, не имея возможности просматривать историю, и я хочу иметь возможность слияния из этого new репозитория с original и наоборот .

Я пытался клонировать original с depth=1, а затем пытался протолкнуть это с -f в new хранилище, но я получил ошибку shallow update not allowed.

Я пытался с точкой пересадки и git filter-branch -- --all, но затем появляется ошибка unrelated histories.

Как мне этого добиться?

1 Ответ

0 голосов
/ 24 июня 2018

Я бы предложил использовать BFG , поскольку я знаю, что это спасло меня раз или два.

Вот краткое практическое руководство для вас:

  1. Убедитесь, что у вас установлена ​​Java
  2. Установите BFG
  3. Клонируйте ваш репозиторий полностью внутриновый репо:

    $ git clone --mirror url/to/your/repo.git
    
  4. Создайте файл с новой строкой для каждой строки, которую вы хотите удалить (каждая строка будет перезаписана как REMOVED по умолчанию):

    $ echo "my_secret_API_key" >> secret.txt
    $ echo "glob:AWS_*" >> secret.txt (search by glob pattern)
    $ # search by regex pattern and change default rewritten text
    $ echo "regex:password=\w+==>password=" >> secret.txt
    
  5. Удалите определенные вами строки из истории репо с помощью BFG:

    $ bfg --replace-text secret.txt repo.git
    $ cd repo.git
    

Сейчасвремя проверить свою историю и убедиться, что все прошло гладко:

  1. Очистите хранилище со всеми внесенными нами изменениями

    $ git reflog expire --expire=now --all && git gc --prune=now --aggressive
    
  2. Нажмите ваши изменения (форсировать не нужно, потому что вы обновляли все ссылки)

    $ git push
    

Для всех остальных, использующих репо, это должно быть простое обновление со следующим:

$ git fetch origin/branch
$ git checkout -B branch origin/branch

Дайте мне знать, если мне нужно что-то уточнить, я должен был сделать это раз или два для клиентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...