Самый простой (безопасный) способ будет создать временную ветвь, указывающую на ваш HEAD, мастер оформления заказа, объединить временную ветвь, а затем удалить его:
git branch temp
git checkout master
git merge temp
git branch -d temp
Можно также избежать использования временной ветви, и просто использовать reflog, чтобы получить коммиты не отрасли:
git checkout master
git merge [email protected]{1}
[email protected]{1}
здесь относится к предыдущей фиксации, что вы проверили; [email protected]{0}
- это то же самое, что и HEAD
, текущая фиксация, из которой вы работаете. Если вы хотите, чтобы увидеть все предыдущие совершает что HEAD
указал на (что еще не истекло), вы можете сделать:
git reflog
Вы сказали, что это произошло потому, что вы пытались отменить фиксации. Как указывает mletterle, вы можете сделать это с помощью git reset
. git reset --hard rev
установит ветку, на которой вы находитесь, HEAD, ваш индекс и вашу рабочую копию для конкретной версии. Обратите внимание, что это сдует незафиксированные изменения, так что сделайте это, только если вы действительно знаете, что делаете. Более безопасным было бы, как правило, делать git reset rev
, что не влияет на вашу рабочую копию, а затем выборочно возвращать отдельные файлы в вашей рабочей копии с git checkout
, чтобы гарантировать, что вы случайно не уничтожили какую-то работу, которую вы делали.
Кроме того, git reset
обычно должен использоваться только для непроверенных целей. Если вы пытаетесь отменить то, что уже было нажато, а другие люди уже слиты, вы обычно хотите git revert
.
. Я не думаю, что вы сможете совершать транзакции (без ветки), но если вы это сделали, и вам не нужно беспокоиться о незапланированных изменениях, вы должны просто нажать вернуться к мастеру и либо перемотка вперед, либо слияние. –
@Rob Вы можете совершать, когда у вас нет ветки; нет ничего, что помешало бы вам сделать это. Вы не можете нажать на ветку, которая не может быть переадресована, и 'git checkout -m' не будет объединять те коммиты, которые вы сделали, когда вы не были в ветке; он только объединяет изменения, которые находятся в вашей рабочей копии или индексе. Если вы будете следовать этим инструкциям, вы можете потерять те коммиты, которые вы сделали (хотя они все равно будут в рефлоге). –
@Brian Вы правы. Сначала я предполагал, что у него только что был индекс, и он хотел вернуться к мастеру. После выяснения ситуации мне нравится ваш ответ намного лучше. Поверните (без ветви) в именованную ветвь, а затем слейте как обычно. –