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

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

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

ответ

0
  1. Если это не было нажато, проверьте мастер, затем используйте git reset --hard с именем последней хорошей фиксации. В качестве альтернативы воспользуйтесь рефлом: [email protected]{1} перенесет вас туда, где вы были раньше. Если он был нажат, используйте git-revert, чтобы создать новую фиксацию с исправлениями.
  2. Проверьте хозяина, затем используйте git reset --hard mybranch. Это заставляет мастер указывать на тот же фиксаж, что и mybranch, по сути, отбрасывая всю работу над мастером, так как ветви расходятся. Опять же, если работа над мастером была обнародована, это плохая идея выбросить ее.
  3. См. Git Development Strategy for Small Team.
+0

-1 никогда не изменяйте историю в общественных местах – 2010-12-02 16:32:42

+0

Не указано, было ли это нажато. – 2010-12-02 16:33:14

0
  1. сказать, что я создать ветку, а затем сливаются в мастера, а затем реализовать вещи пошло не так. Как я могу вернуться назад, прежде чем объединиться?

    1. Если вы не отодвигают на ветку или толкнули и знать absoutely уверен, что никто другой не вытащил из магистралью затем сделать:

      мерзавец сброс --hard ГОЛОВА ~ N (N является количество фиксаций вы хотели бы вернуться)

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

      мерзавец вернуться

  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/

1
  1. Если вы слиты и не хотите, чтобы совершить, собственно команда

    git reset --hard [email protected]{1} 
    

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

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

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

    git merge -s ours 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 my article

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

    IRC channel on freenode Twitter Search waterfall

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

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