Я хотел бы опубликовать мою историю git в публичном репозитории, но хотел бы удалить старые коммиты. Все способы, которые я видел для этого, изменяют SHA1s нового комманда, который не является вариантом, поскольку я хочу иметь возможность нажать на измененное репо. Есть какой-либо способ сделать это ?Публикация частичной истории git
ответ
Если вы измените историю, вы неизбежно измените хэши SHA1 нового коммита. Это связано с тем, что хеши основаны на всей истории, а не только на последнем снимке. Это по дизайну, чтобы поймать коррупцию (случайную или злонамеренную) какой-либо части репозитория.
Я, конечно, что-то отсутствует, но вы не можете использовать что-то вроде:
git log --since="2009-1-1" -p
Чтобы извлечь только коммиты после определенной даты или:
git log -p 18f822e..HEAD
, чтобы получить всю историю после определенного коммита.
Он написал «историю», но текст означает, что он означает «частичный репозиторий». – gimpf
Ben James' комментарий точный. Однако то, что вы можете сделать, это запустить новую ветку в вашем текущем репозитории. Оттуда создайте историю этого филиала, как хотите. Когда вы публикуете, удаляйте только эту частную ветку. Это даст вам функциональность, которую вы ищете.
Вот как я только что сделал это в моем тесте:
git branch stackoverflow #Get myself a working branch from current
git rebase -i deadbeef #0xDEADBEEF is the hex of my first commit
Сквош все, что вы хотели бы скрыть. Обратите внимание, что git получает PISSED, если у вас есть репозиторий с более чем одним корнем. Это не должно быть возможно, но я только что обнаружил, что через некоторые магические преобразования svn я создал такого зверя.
Проект может также иметь несколько корней, хотя это не является общим (или обязательно хорошей идеей).
Экспортировать новую ветку. Оттуда вы можете рассматривать это как основную ветвь развития и все остальное как актуальную или историческую ветвь, которая не подвергается воздействию.
- 1. Git: Отмена переписывания истории?
- 2. Ремонт сломанной истории git
- 3. Git: Удаление истории файла?
- 4. Репозиторий Git без истории
- 5. Добавление истории в git
- 6. Отчет об истории Git
- 7. GIT различные истории команды
- 8. Очистка истории git
- 9. git branch без истории
- 10. Свертывание истории хранилища git
- 11. Переписывание истории в Git
- 12. Публикация репозитория «git svn»
- 13. Публикация пользовательской истории на Facebook Open Graph
- 14. Публикация истории в Windows Azure Веб-сайты
- 15. Публикация истории с использованием Facebook открытого графика
- 16. Facebook- Публикация истории на стене пользователя
- 17. Исправление истории в репозитории GIT
- 18. Передача истории CVS в GIT
- 19. Прогуляйтесь по истории с git?
- 20. Clone git repository без истории?
- 21. Скопируйте git-репо без истории
- 22. Объединить две истории репозитория git
- 23. Просмотр истории GIT перемещенных файлов
- 24. Git - Удалить фиксацию из истории
- 25. Удаление слияния из истории Git
- 26. Undo Git rebade общей истории
- 27. чистка истории git с BFG
- 28. git tfs клон с частичной историей
- 29. Публикация частичной формы из диалогового окна JQuery с использованием MVC
- 30. Сохранение истории субмодуля git отдельно от истории репо
Почему это не вариант? Вы все равно сможете нажать на новое репо. Но да, изменение истории создаст новые хеши - это часть криптографической безопасности Git. В противном случае любой может подделать ваше репо и утверждать, что он был идентичен вашему! –