Как работать над двумя независимыми вещами одновременно, используя ветки git?

Мы используем репозиторий Azure DevOps Git в нашей организации. Недавно мы начали с GIT.

Я проверил одну локальную ветку с именем feature-123. Я внес несколько изменений, которые внес в местный филиал. Но я не закончил разработку функции, и мне пришлось переключиться на другое срочное исправление ошибки. Для этого я проверил новую локальную ветку с именем «bug-999», в которой я хочу обработать срочную ошибку. Я исправил ошибку и отправил bug-999 на удаленный доступ. Но я вижу, что мои коммиты из feature-123 также отправляются.

Итак, коммиты в моей первой локальной ветке переносятся в новую локальную ветвь, и когда я нажимал, они переходили на удаленный.

Вопросы:

  1. Как поступить с этим делом?
  2. Если я хочу нажать конкретную фиксацию (исключая предыдущие), как я могу это сделать?

Если вы начали ветку bug-999 из feature-123, она содержит все коммиты feature-123.   —  person Learner    schedule 10.04.2021

Отвечает ли это на ваш вопрос? Предпочтительный рабочий процесс Github для обновления запроса на вытягивание после проверки кода (может быть, есть дубликат получше). Я подумывал написать ответ, но, хотя обстоятельства немного отличаются, ответ тот же. git rebase и git push -f — два инструмента, которые можно использовать для исправления ситуации. Избегать этого в первую очередь означает иметь хорошие привычки git (ветки).   —  person Learner    schedule 10.04.2021

См. также:  Почему git не может видеть мое удаленное репо, которое, как я уверен, существует?
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Learner

    Эта проблема возникла из-за того, что ваша ветка исправления ошибок была создана из ветки функции. Следовательно, по умолчанию в нем будут все коммиты, которые уже были в вашей функциональной ветке. Ветка в git — это просто указатель на фиксацию. Следовательно, когда вы создали свою ветку исправления ошибок, git назначил еще один указатель на самую последнюю фиксацию ветки функции. Теперь всякий раз, когда вы добавляете фиксацию в ветку исправления ошибок, этот указатель просто перемещается вперед, сохраняя все предыдущие фиксации нетронутыми.

    TL; DR: создавайте новую ветку (в данном случае исправление) на основе основной, а не функциональной ветки.

    Вот шаги:

    Допустим, у вас есть 2 ветки, а именно. main & feature1. Ветвь feature1 является ответвлением main. Вы находитесь в ветке feature1 и внесли некоторые изменения. Но вы понимаете, что есть срочная ошибка, которую нужно исправить в main. Вот что вы можете сделать —

    1. Подготовьте и зафиксируйте свои изменения в feature1 ветке ИЛИ stash их, используя git stash
    2. Оформить заказ в ветке main, используя git checkout main
    3. Ответьте на ветку исправления ошибок, используя git checkout bugfixBranchName
    4. Внесите свои изменения и зафиксируйте их

    Это гарантирует, что ваша вновь созданная ветка исправления ошибок основана на основной ветке, поэтому коммиты, сделанные в ветке feature1, не будут там в ветке bugfix.

    Теперь перейдем к вашему второму вопросу, этому вопросу поможет вам ответить на этот вопрос.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: