2017-02-07 9 views
6

Я занимался своим проектом, а в какой-то момент я обнаружил, что одна вещь перестала работать. Мне нужно было посмотреть состояние моего кода, когда он работал правильно, поэтому я решил использовать git checkout (потому что я хотел проверить что-то). И поэтому я сделалGit checkout - переход обратно в HEAD

git checkout SHA 

пару раз, идя назад к точке, с которой я не могу пойти в ГОЛОВЕ, выход следующие:

git checkout SHA-HEAD 

error: Your local changes to the following files would be overwritten by checkout: 
    [list of files] 
Please, commit your changes or stash them before you can switch branches. 
Aborting 

Я довольно много, что я еще не что-то изменилось. Команда

git checkout master 

дает тот же результат.

Есть ли способ вернуться к HEAD?

Что такое безопасный способ «перескакивания» истории?

+0

Если вы не хотите, чтобы эти изменения 'мерзавец чистой -f' будет очистить все неотслеживаемые файлы. Затем выйдите на мастер – gmuraleekrishna

+0

Сообщение 'error: ...' означает, что вы или что-то сделали, возможно косвенно, * * * изменили файлы. Вы можете указать Git отказаться или перезаписать эти изменения или использовать 'git status' и/или' git diff', чтобы увидеть, что именно, изменилось. Это может быть так же просто, как некоторая модификация окончания строки или какая-то команда, которая работает в фоновом режиме, который записывается в файл. (Кроме того: «вернуться к HEAD» не имеет смысла в Git, так как вы всегда * на HEAD: 'HEAD' буквально означает« текущая фиксация ». Вы можете * изменить * HEAD, после чего вы все еще на HEAD , просто другое HEAD. Это ... сложно сформулировать. :-)) – torek

+1

Git загружен механизмами, так что вот два: 'git reset --hard HEAD' означает« сбросить индекс и дерево работы, чтобы они соответствовали HEAD ", т.е. выбросить изменения. Или: 'git checkout -f master' означает« изменить HEAD как 'master', даже если это означает отбросить некоторую работу»: '-f' означает« force ». – torek

ответ

11

Вы можете stash (сохраните изменения во временном поле), затем, обратно в master филиал HEAD.

$ git add . 
$ git stash 
$ git checkout master 

Перейти За Фиксирует Назад и вперед:

  • Перейти к конкретному commit-sha.

    $ git checkout <commit-sha> 
    
  • Если у вас есть неподтвержденные изменения здесь, то вы можете оформить новую ветку, Добавить, Зафиксировать нажим текущей ветви на пульт дистанционного управления.

    # checkout a new branch, add, commit, push 
    $ git checkout -b <branch-name> 
    $ git add . 
    $ git commit -m 'Changes in the commit' 
    $ git push origin HEAD  # push the current branch to remote 
    
    $ git checkout master   # back to master branch now 
    
  • Если у вас есть изменения в конкретное обязательство, и не хотят, чтобы сохранить изменения, вы можете сделать stash или reset затем проверка на master (или любой другой ветви).

    # stash 
    $ git add -A 
    $ git stash 
    $ git checkout master 
    
    # reset 
    $ git reset --hard HEAD 
    $ git checkout master 
    
  • После проверки конкретного фиксации, если у вас нет незафиксированных изменений, то, как раз обратно master или other отрасли.

    $ git status   # see the changes 
    $ git checkout master 
    
    # or, shortcut 
    $ git checkout -  # back to the previous state 
    
+0

Это решило мою проблему - частично. Все еще мне нужно знать, как прыгать через коммиты вперед и назад без последствий. – asdfgh

+1

@rbraun, я отредактировал свой ответ, в котором показано, как вы можете перепрыгивать через фиксации вперед и назад. –

 Смежные вопросы

  • Нет связанных вопросов^_^