Мне интересно, как удалить первый коммит в git.Как удалить первый коммит в git?
Что такое ревизия перед совершением каких-либо вещей? У этой версии есть имя или тег?
Мне интересно, как удалить первый коммит в git.Как удалить первый коммит в git?
Что такое ревизия перед совершением каких-либо вещей? У этой версии есть имя или тег?
Для меня, самый безопасный способ заключается в использовании update-ref
команду:
git update-ref -d HEAD
Это удалит именованный ссылку HEAD
, поэтому он будет сброса (мягко, вы не потеряете свою работу) все ваши фиксации вашего текущего филиала.
Если то, что вы хотите, чтобы слить первый коммит второй, вы можете использовать rebase
команду:
git rebase -i --root
последний способ может быть, чтобы создать филиал сироту, филиал с тем же содержанием но без какой-либо фиксации истории, и фиксированием нового контента на нем:
git checkout --orphan <new-branch-name>
Очень жаль, что это не принятый ответ. Слишком плохо, что большинство хитов в google более или менее говорят «вы не можете отменить первый коммит». Это помогло мне. Благодаря! – danielpops
Спасибо @danielpops за вашу поддержку! Приятно заметить, что я ответил на этот вопрос 3 года спустя. Тем временем Гит развился. – tzi
Сиротская ветвь сделала трюк. Спасибо! – fanaugen
Перед первым фиксацией ничего нет, так как каждая фиксация ссылается на родительский фиксатор. Это делает первую фиксацию специальной (сиротской фиксацией), поэтому нет способа ссылаться на предыдущее «состояние».
Итак, если вы хотите исправить фиксацию, вы можете просто git commit --amend
: это изменит фиксацию без создания другой.
Если вы просто хотите, чтобы начать все сначала, удалить .git
хранилище, и сделать еще один с git init
Этот ответ неверный: есть способ вернуться к состоянию до сначала совершить. См. [Ответ tzi] (http://stackoverflow.com/a/32765827/46783) ниже. –
Если вы хотите сохранить другие отрасли, но, например, сделать мастер ветвь начать заново без общей истории к другой ветви, один безопасный способ для достижения этой цели является создание нового хранилища и нажмите содержимое, что в вашей старой один:
cd ..
git init newrepo
cd newrepo
# make some initial commits
git push ../oldrepo master:newmaster
Это создает филиал «newmaster» в старом хранилище, с историей, которая не имеет ничего общего с любой из других ветвей. Конечно, вы можете просто перезаписать мастер, а также с помощью git push -f.
Если вы хотите уничтожить все ветки и весь существующий контент, просто запустите rm -rf .git/
.
Возможно, вы просто захотите отредактировать свою первую фиксацию (так как всегда есть первая фиксация в репозитории git). Рассмотрите возможность использования git commit --amend --reset-author
вместо обычного git commit --amend
.
Другим способом вы можете сделать, это:
git checkout dev
git branch -D master
git checkout --orphan master
Конечно, все это будет зависеть от вашего использования, но если у вас есть несколько ветвей, удаление t он .git
каталог не имеет смысла.
После этого вы должны удалить ветвь в пульте дистанционного управления перед нажатием. В противном случае при попытке нажать эту ошибку вы получите:! [reject] master -> master (non-fast-forward) - ошибка: не удалось направить некоторые ссылки на «[email protected]: r1/r2.git» - подсказка: обновления были отклонены, поскольку кончик текущей ветви позади - намек: его удаленный аналог. Интеграция удаленных изменений (например, подсказка: «git pull ...») перед повторным нажатием ... - Если вы делаете git, все коммиты возвращаются. – dxvargas
мерзавца проверки --orphan TE MP_BRANCH
мерзавец добавить -A
мерзавец совершающие -am "Initial совершить"
git branch -D master
мерзавец филиал -m мастер
мерзавца толчке -f мастер происхождения
Для начала с мерзавцем, вы должны знать, что пересмотр не имеет смысла. Вы можете говорить о коммитах или их относительных SHA. Кроме того, почему вы хотите это сделать? Первая фиксация - это то, на чем все построено. Вы можете раздавить несколько коммитов вместе, включая первый коммит, который становится новым первым фиксатором, но что означает даже удалить первый фиксатор (или удалить любой, кроме последнего фиксации)? – Shahbaz
@Shahbaz да, вот лучший способ, посмотрите здесь: http://ariejan.net/2011/07/05/git-squash-your-latests-commits-into-one – timaschew
Вы можете использовать 'git rebase - i --root'. Для получения более подробной информации см. Следующий ответ SO: http://stackoverflow.com/questions/2246208/change-first-commit-of-project-with-git – MKroehnert