Недавно я узнал, как добавить свое решение в систему контроля версий. после этого я подключил его к своей учетной записи GitLab.

Для одного разработчика я в основном знаю, как все работает, от локального коммита до отправки его на сервер для отражения и объединения изменений в онлайн-репозиторий.

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

Возможно ли только слить измененную строку на сервер. у меня возникли конфликты при слиянии с сервером

Например, я добавил 3 строки и зафиксировал изменения на сервере, а затем после того, как у моего товарища по команде было 5 строк, моя версия перезаписывалась вместо того, чтобы объединять их вместе.

Я что-то упускаю ?. Благодарность

-1
TheQuestioner 6 Сен 2016 в 17:45

3 ответа

Лучший ответ

Хорошая практика - всегда получать любые изменения с пульта перед тем, как нажимать . Это позволит пользователю получать любые изменения, которые вы внесли, а также включать их.

Конфликт слияния - это ожидаемый результат, поскольку и вы, и ваш партнер изменили одни и те же строки, и это именно то, что вам нужно, чтобы не перезаписывать изменения друг друга. Вам просто нужно разрешить конфликт слияния, прежде чем нажимать. Единственный раз, когда вы перезаписываете изменения друг друга, это если вы отбрасываете изменения других лиц и принимаете свои изменения при разрешении слияния.

Вы можете использовать ряд инструментов слияния, например kdiff, diffmerge и т. д., которые помогут вам выбрать, какие строки добавить, чтобы вы не перезаписывали изменения друг друга.

3
Jayan 6 Сен 2016 в 16:41

Прежде всего, давайте придерживаться терминологии git: вы можете merge ветки и push или fetch их на / с сервера (remote).

Поэтому, если у вас возникли конфликты при отправке на remome, вам нужно fetch внести изменения с пульта дистанционного управления, merge их локально и push обратно в источник ( remote) ваш коммит и, почти всегда, «коммит слияния».

По поводу вашего вопроса в шапке:

Отправить только измененную строку в файл

Да, можно stage и commit только один hunk (несколько строк кода) вместо всего файла. См. git add -p. Или, если вы предпочитаете графический интерфейс, насколько я помню, официальный клиент для github поддерживает коммит по кускам.

1
Sergey Belash 6 Сен 2016 в 15:11

Думаю, вам нужно небольшое пояснение. Предположим, что команда состоит из 2 человек ( A – B ), и они пишут код в один и тот же день.

  • A фиксирует свои изменения и затем отправляет их в удаленный репозиторий;
  • B фиксирует свои изменения, а затем отправляет их в удаленный репозиторий после A;

Когда B нажимает, его локальный код не согласован с кодом удаленного репозитория, поскольку в истории есть новый коммит. Пользователь B вынужден вытащить новую фиксацию перед отправкой и в конечном итоге разрешить локально конфликт слияния.

Затем B может также отправить в удаленный репозиторий, а A может получить новые изменения, сделанные B.

Надеюсь, я объяснил.

0
lubilis 6 Сен 2016 в 15:10