В настоящее время у меня есть частный репозиторий на github, который я хочу опубликовать. Однако некоторые из первоначальных коммитов содержат информацию, которую я не хочу обнародовать (жестко закодированные записи и т. Д.).
Какой самый простой способ сделать последний коммит публичным (мне на самом деле не нужны или не нужны предыдущие коммиты в публичном репозитории) без включения какой-либо части или всей истории коммитов?
Ответы:
Вы можете ограничить глубину истории при клонировании :
Используйте это, если вы хотите ограниченную историю, но все же немного.
источник
shallow update not allowed
.Используйте следующую команду:
Куда:
depth
количество коммитов, которое вы хотите включить. т.е. если вы просто хотите использовать последний коммитgit clone --depth 1
branch
Имя удаленной ветви, с которой вы хотите клонировать. т.е. если вы хотите, чтобы последние 3 коммитовmaster
использовались в веткеgit clone --depth 3 -b master
repo_url
это URL вашего хранилищаисточник
shallow update not allowed
. Я нашел этот ответ переполнения стека полезным в этом случае.Удаление
.git
папки, вероятно, самый простой путь, так как вам не нужна / не нужна история (как сказал Стефан).Таким образом, вы можете создать новое репо из вашего последнего коммита: ( Как клонировать проект seed / kick-start без всей истории? )
затем удалите
.git
, а затем запуститеИли, если вы хотите повторно использовать текущий репо: сделать текущий коммит единственным (начальным) коммитом в репозитории Git?
Выполните вышеупомянутые шаги тогда:
Нажмите на ваш репо.
источник
источник
--depth 1
ненужно в этом случае , потому что история также удаляется сrm -rf .git
git clone --depth 1 -b $src_branch $repo_src_url $dir && cd ./$dir && git commit --amend --author "Some One <some@one.com>" -m "Initial Commit" && git remote set-url origin $repo_trg_url && git push -u origin master
--depth 1
не нужно, но это также безвредно и экономит небольшую пропускную способность сети (в любом случае, нет смысла извлекать историю, которую вы собираетесь удалить)Разве это не то, что делает раздавливание ребаз? Просто раздавите все, кроме последнего коммита, а затем (силой) нажмите его.
источник