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

#git #git-commit #git-push #git-pull

#git #git-commit #git-push #git-pull

Вопрос:

Я новичок в Git, и проблема, с которой я столкнулся сегодня в моем проекте uni, заключается в следующем:

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

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

Что нам теперь делать, мне просто сказать ему скопировать эти файлы в другое место на его диске, а затем «объединить» изменения? Как нам избежать этой ситуации в будущем?

Извините за плохую формулировку и прочее, как я уже сказал, я новичок и очень невежественен в этой теме.

Комментарии:

1. 1. git может довольно хорошо объединяться 2. вы можете работать с разными ветвями и выполнять запросы на извлечение.

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

3. Как этого избежать? Сначала поговорите. Тем не менее, иногда это случается, даже в реальных командах, которые разговаривают. Git не потеряет свои изменения (по крайней мере, не целенаправленно), вместо этого a git pull , скорее всего, приведет к конфликту слияния. Хотя они могут вызывать стресс (потому что люди не часто имеют с ними дело), есть способы отказаться и повторить попытку без потери работы. В будущем лучше использовать ветвление и слияние. Вы можете найти это полезным введением: atlassian.com/git/tutorials/using-branches/merge-conflicts

4. Как упоминает @JohnSzakmeister, изменения не будут потеряны. Возможно, он не зафиксировал свои изменения, и git говорит ему спрятать или зафиксировать их, прежде чем продолжить. Это именно то, что git / version control делает хорошо. Конфликты слияния неизбежны, но не бойтесь их.

5. «он говорит, что если он вытащит мой коммит, то его изменения в тех же файлах будут потеряны». Это неправда, он столкнется с конфликтом, и тогда вам двоим нужно разрешить его вместе, поскольку вы двое парней создаете конфликт. Исходя из моего опыта, я всегда избегаю конфликта до того, как он произойдет. Вам нужно предсказать, что изменяемые вами файлы не повлияют на вашего товарища по команде, и договориться с ним, чтобы избежать одновременного изменения одного и того же файла.

Ответ №1:

Я не понимал, что он кодировал одновременно со мной

Добро пожаловать в реальный мир программирования. Это происходит постоянно.

Это настолько распространенная проблема, что любая приличная система контроля версий имеет встроенные возможности для автоматического объединения изменений. Git чрезвычайно эффективен в том, что, когда изменения происходят в разных частях файла, второй человек, выполняющий извлечение (или выборку / перебазирование), даже не заметит. Вы замечаете только тогда, когда git не может объединить себя, тогда возникают конфликты слияния, которые требуют внимания человека.

Что нам теперь делать,

Давайте предположим, что ваш коллега сделал git pull сбой, потому что вы внесли изменения, затрагивающие некоторые из этих файлов. Теперь каждый файл будет содержать информацию о конфликтующих обновлениях. Приличные редакторы, такие как Visual Studio code, покажут вам все эти конфликты и позволят вам выбрать ту или иную версию соответствующего кода. Перейдите к этому и прочитайте раздел о «Конфликтах слияния».

Другими словами, реальный ответ таков: всем людям, работающим с вами, пора взять хорошую книгу о git (например, эту) и начать изучать инструмент, который вы используете. Видите ли, git — чрезвычайно мощный, а иногда и запутанный инструмент. Если вы серьезно относитесь к изучению программирования, то вы также должны серьезно относиться к изучению таких инструментов.

Комментарии:

1. Большое вам спасибо за этот действительно хороший ответ! Тогда я начну читать о слиянии и ветвлениях. Хорошего дня!

Ответ №2: