Как перейти к последнему коммиту с пульта / мастера в git? - PullRequest
3 голосов
/ 01 апреля 2012

Я случайно сохранил файл не в той ветке. Тогда я сделал git reset --soft HEAD^, а теперь git status говорит, что я отстал на 14 коммитов и перечисляет кучу измененных файлов красным цветом. Включая некоторые неотслеживаемые файлы.

Понятия не имею, что делать. Я пытался перейти на последний коммит из удаленного репозитория, но он говорит, что мои локальные изменения будут перезаписаны после того, как я git pull.

Помощь. Я не хочу больше портить мой локальный репо. Я просто хочу вернуться в состояние, в котором я находился, сохранить отредактированный файл в правильной ветке и зафиксировать.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2012

Если вы изменили свое местное отделение и не хотите терять какие-либо изменения, вы можете использовать git-stash . Перед любой попыткой рекомендую сделать резервную копию вашего локального репозитория .Попробуйте выполнить следующие действия:

  1. git stash save 'local changes'.Это сохранит ваши локальные изменения во временном месте и позволит вам работать с текущей веткой без каких-либо из этих предыдущих изменений.

  2. git pull <remote-name> <branch-name>.Как вы уже знаете, он будет получать новые коммиты из удаленной ветви и применяться к вашей локальной ветви.

  3. git stash pop.Это вернет то, что вы сделали на шаге 1 .Он применит ваши предыдущие изменения (те, что вы сохранили) в отношении локальной веткиВы несете ответственность за разрешение любых конфликтов, если таковые возникают.Когда вы закончите, вы можете захотеть совершить и нажать - это ваше дело.

1 голос
/ 01 апреля 2012

Не паникуйте

  1. Сделайте резервную копию вашего хранилища.

  2. Сохраните изменения с помощью git stash save. Это внесет ваши изменения в тайник .

  3. Затем извлеките из удаленной ветки: git pull <remote> <wrong-branch>. Это вернет вашу рабочую копию нетронутой ветке HEAD. Так выглядела ваша ветка до того, как вы начали работать с набором изменений.

  4. Теперь примените сохраненные изменения к своей рабочей копии: git stash apply. Git будет достаточно умен, чтобы игнорировать спрятанные изменения, которые соответствуют существующим коммитам, поэтому ваша рабочая копия останется в том же состоянии, что и до того, как вы сделали коммит в неправильную ветку.

  5. Теперь извлеките правую ветвь и сделайте коммит как обычно:

    git checkout <right-branch>
    git add [...]
    git commit -m "blah blah blah"
    

    Возможно, вам придется поменять свои изменения при проверке правильной ветви, если ваш набор изменений несовместим с правильной веткой, но как только вы это сделаете, ваши изменения будут зафиксированы в правой ветке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...