Несколько вопросов по использованию git - PullRequest
0 голосов
/ 02 декабря 2010
  1. скажем, я создаю ветку, затем сливаюсь с мастером, а затем понимаю, что что-то пошло не так.Как я могу вернуться обратно до слияния?

  2. говорят, что я создаю ветку, работаю над ней, а затем иду к слиянию и получаю массу конфликтов.Скажем, я не хочу иметь дело с этим и сделать новую ветку мастером сейчас, как я могу это сделать?

Кстати, какой лучший учебник вы видели в Интернете с реальнымшаблоны использования life GIT?

Ответы [ 4 ]

1 голос
/ 02 декабря 2010
  1. Если вы объединились и не хотите этого коммита, правильная команда будет

    git reset --hard HEAD@{1}
    

    Это означает, что вы должны сбросить ветку туда, где она была раньше (читайте синтаксис {} - вы можете получить больше информации, прочитав о git reflog). HEAD^1 также будет работать, но вы должны знать, что вы указываете первого родителя текущей фиксации.

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

  2. Правильный способ сделать это - снова объединиться, но на этот раз сделать это из новой ветви и указать, что вы хотите, чтобы только ваша сторона. Стратегия "Их" устарела.

    git merge -s ours master
    

    затем обновите master до того места, где находится другая ветвь:

    git checkout master
    git merge --ff-only otherbranch
    

    Или, вместо этого, поскольку вы знаете, что это будет ускоренное слияние (вышеприведенное - просто проверка безопасности), вы можете просто обновить мастер до текущего коммита, не проверяя его:

    git update-ref refs/heads/master HEAD
    

    и вы можете продолжить работу над своей веткой. Если вы собирались поработать над мастером, то используйте предыдущие команды.

  3. Вот некоторые ссылки, которые я нашел полезными:

    gitready.com Commuinity Git Book Pro Git Book моя статья

    Другие источники:

    IRC-канал на экране Twitter Search водопад

    Вы также можете найти меня в твиттере под тем же идентификатором.

0 голосов
/ 02 декабря 2010
  1. http://www.kernel.org/pub/software/scm/git/docs/git-revert.html
  2. для слияния git reset --hard достаточно, для ребазинга вам нужно будет сделать git rebase --abort
0 голосов
/ 02 декабря 2010
  1. скажем, я создаю ветку, затем сливаюсь с мастером, а затем понимаю, что что-то пошло не так.Как я могу вернуться обратно до слияния?

    1. Если вы не выдвинулись на основную линию или не подтолкнули и точно знаете, что никто не вытянул с основной линии, то выполните:

      git reset --hard HEAD ~ N (N - количество коммитов, которые вы хотели бы вернуться.)

    2. Если вы нажали и не можетебудь уверен, что никто другой не потянул, потом признай свою ошибку и сделай:

      git revert

  2. скажем, я создаю ветку, работаюна нем, а затем перейти к слиянию и получить множество конфликтов.Скажем, я не хочу иметь дело с этим и сделать новую ветку мастером сейчас, как я могу это сделать?

    git checkout <desired branch>
    
    
    git branch -d master
    
    
    git branch -m <desired branch> master
    
  3. Кстати, какое лучшее учебное пособие вы виделионлайн с реальными шаблонами использования GIT?

    http://nvie.com/posts/a-successful-git-branching-model/

0 голосов
/ 02 декабря 2010
  1. Если он не был выдвинут, проверьте мастер, затем используйте git reset --hard с именем последнего хорошего коммита.В качестве альтернативы, используйте reflog: HEAD@{1} вернет вас туда, где вы были ранее.Если он был нажат, используйте git-revert для создания нового коммита с вашими исправлениями.
  2. Проверьте мастер, затем используйте git reset --hard mybranch.Это заставляет мастера указывать на тот же коммит, что и на mybranch, по сути, отбрасывая всю работу над master, поскольку ветви разошлись.Опять же, если работа над мастером была обнародована, плохая идея - выбросить ее.
  3. См. Стратегия развития Git для небольшой команды .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...