Как клонировать проект запуска/запуска без всякой истории?
Обратите внимание, что использование параметра --depth=1
не позволяет перенаправить проект в новый репозиторий.
для получения дополнительной информации см.: "Удаленный отказ" (неглубокое обновление не разрешено) после изменения Git удаленного URL
Ответы
Ответ 1
Вы можете сделать
git clone <git_url>
удалите репозиторий .git из своей папки. Который удалит всю вашу историю.
Вы можете сделать
git init
который создаст для вас совершенно новый проект git.
Это может быть не самый лучший способ. Но это сработает. Надеюсь, что это поможет.
Ответ 2
Пока вы считаете, что полная потеря истории не является проблемой, подход, предложенный Аджаем, вполне оправдан. Но если вы хотите сохранить историю вашего мелкого клона, у меня есть другое предложение.
Мелкий клон притворяется, что имеет полную историю, используя так называемую точку пересадки, чтобы подделать родителя "первого" коммита. Если мы предположим, что у нас есть полная доступная история, мы могли бы перефразировать вопрос: как я могу выбросить историю перед конкретной ревизией?
Это означает, что мы можем использовать комбинацию точки пересадки и git filter-branch
(как предложено в связанном вопросе). Однако вы должны заметить, что это перезапишет всю вашу историю, сделав новую несовместимой с удаленным, с которого мы изначально клонировали. В связи с этим мы должны удалить старый пульт из нашего хранилища.
git remote remove <old-remote-name>
Теперь мы можем начать нашу переписать. Предположим, что мы хотим, чтобы текущий мастер зафиксировал новый корень для хранилища.
git rev-parse --verify master >> .git/info/grafts
git filter-branch -- --all
Это перезапишет всю историю нашего репозитория с текущим основным коммитом в качестве нового корня. Вы можете завершить переписывание, удалив "резервные" ссылки в refs/original
. Кроме того, теперь вы можете удалить файл .git/shallow
.
После того, как вы это сделаете, вы сможете перенести историю, которая сейчас не установлена, на ваш новый пульт.
Ответ 3
Попробуйте что-то вроде этого:
mkdir -p /tmp/git-copy
cd /tmp/git-copy
# create another copy of your repository
git clone file:///path/to/cloned/repo
cd repo
git rebase -i (first-commit)
# in vim:
# :2,$s/^pick/squash
# :w
# Now wait, it will take a while...
git push --mirror [email protected]:username/new-repo.git
Я попробовал это сейчас этот репозиторий. Кажется, что работа - никакая история и все подмодули не повреждены.