Подтвердить что ты не робот

Git ветка без истории

My git repo содержит конфиденциальные пароли, которые по моим причинам не могут быть удалены прямо сейчас. Сейчас все нормально, потому что это репо является только внутренним, но меня попросили создать ветку, безопасную для обмена с партнерами.

Есть ли способ создать ветвь в git, а затем удалить из нее файлы таким образом, чтобы их невозможно было получить с помощью журнала?

Похоже на длинный выстрел, но подумал, что я спрошу. Единственное решение, которое я могу придумать, - это скопировать дерево файлов в новый репозиторий git без особого файла, но потом я потеряю возможность слияния изменений партнеров с моим репо.

4b9b3361

Ответ 1

Одна вещь, которую вы можете сделать, - создать ветвь вашего репо, отредактировать пароли и затем создать мелкий клон (с глубиной 1) этого репозитория, который вы передадите партнерам. Они могут делать патчи и многое другое против этого клона, но не могут видеть всю историю и не могут продвигать репо где-нибудь еще. Если они просто вносят изменения, это должно быть приемлемым решением. Вы все равно можете принимать исправления от них и обращаться к своему мастер-репозиторию.

Подробнее о --depth git clone.

Ответ 2

Используйте filter-branch:

Предположим, вы хотите удалить файл (содержащие конфиденциальную информацию или нарушение авторских прав) из всех обязуется:

git filter-branch --tree-filter 'rm filename' HEAD

Ответ 3

git clone --depth 1 url_of_your_remote_repository

Ограничение мелкого хранилища

  • вы не можете клонировать или извлекать из мелкого репозитория (это означает, что вы не можете создать новый репозиторий, используя эту мелкую копию)

  • вы не сможете просмотреть всю историю с помощью команды журнала git.

  • Его работоспособное решение, ваш партнер может внести некоторые изменения и сделать его "патчи" и отправить его вашему партнеру, если вы хотите, чтобы ваш партнер менялся. Затем примените эти исправления в текущем рабочем дереве/любых ветвях, которые вы хотите применить.

    Подробнее

Ответ 4

Я отвечу на пару ответов. Предположим, что вы можете создать ветвь, которая не содержит конфиденциальных данных. Вы облака, затем сделайте мелкий клон ветки, которая не будет содержать историю, и поэтому вы не могли бы вытащить ее, но она могла бы вырваться из вас.

Другое дело - клонировать новый репозиторий и использовать средства удаления git для удаления конфиденциальных данных. Это создало бы отдельный репозиторий, который не мог бы взаимодействовать, кроме как с помощью патчей с первым, но имел бы всю историю.