У меня была странная ситуация сегодня .. Я постараюсь и воссоздаю то, что я думаю.git: ветвление удалено некоторые коммиты
Я хотел переместить спекулятивное изменение (сделанное в a_file
) в новую ветку и продолжить работу над главной ветвью без нее.
На мастер с a_file
и b_file
грязный я сделал:
git checkout -b saved_feature
git commit a_file -m "Putting this modification on a different branch"
git checkout master
На данный момент мерзавца жаловался, что b_file был грязный - это предупреждающий знак, но я не узнал его.
я был еще на ветке saved_feature
, так что я думал, что я мог сделать:
git stash save
git checkout master
До сих пор так хорошо
git stash pop
На данный момент я получаю ошибку о том, что тайник не может быть слиты.
разглядываю журнал - по какой-то причине есть около 6 дней стоит фиксаций, которые первоначально были приверженных master
отрасли, но которые не были в журнале. Эти коммиты были только на новой ветке, которую я создал (я проверил, в случае, если я совершал их в другую ветку).
После изучения журнала ветви saved_feature
, я вижу, что все они есть.
Что случилось?
следующий раз я попробовал на master
:
git merge saved_feature
Но перенесемся вариант не удалось с тонной конфликтов.
Я также использую Git-SVN, чтобы подтолкнуть изменения внешнего хранилища так далее master
снова я сделал:
git svn rebase
Это выздоровел некоторые из ранее подтолкнули фиксаций из SVN.
Я тогда вишня остального самый последних коммитов из saved_feature
ветви, тогда я сделал git stash pop
, закрепленные конфликты, которые должны были автоматически объединены, но не был, и, наконец, был мой master
в состоянии это было изначально.
Может ли кто-нибудь указать на эту жалкую историю, где моя ментальная модель и git разложили пути &, как я могу избежать попадания в такие беспорядки, как эти?
Я определенно рекомендую использовать функцию '__git_ps1' из завершения bash git (и использовать это тоже!) Вместо того, чтобы это домашнее решение этого блога. – Cascabel
@Jefromi: Согласен. По крайней мере, это сообщение в блоге упоминает функцию '__git_ps1'. (хотя этот другой «доморощенный» тоже хорош: http://asimilatorul.com/index.php/2010/04/13/bash-prompt-with-git-branch-and-status/#readmore-entry100413- 221424) – VonC
Одно из возможных объяснений того, почему объединение * saved_feature * в * master * может быть неудачным слиянием и иметь конфликты: OP отсоединил его HEAD у какого-то предка кончика * master * (например, для исследования старого моментального снимка), и его новые изменения имели конфликт с состоянием кончика * master * (например, исправление ошибок, которые уже были зафиксированы на кончике * master *, но по-разному). –