Недавно я узнал, как добавить свое решение в систему контроля версий. после этого я подключил его к своей учетной записи GitLab.
Для одного разработчика я в основном знаю, как все работает, от локального коммита до отправки его на сервер для отражения и объединения изменений в онлайн-репозиторий.
Но мне было интересно, как это произойдет, если, например, я в команде, скажем, из трех человек. все три использования работают над одним решением, но с нашими собственными копиями на наших собственных ноутбуках
Возможно ли только слить измененную строку на сервер. у меня возникли конфликты при слиянии с сервером
Например, я добавил 3 строки и зафиксировал изменения на сервере, а затем после того, как у моего товарища по команде было 5 строк, моя версия перезаписывалась вместо того, чтобы объединять их вместе.
Я что-то упускаю ?. Благодарность
3 ответа
Хорошая практика - всегда получать любые изменения с пульта перед тем, как нажимать . Это позволит пользователю получать любые изменения, которые вы внесли, а также включать их.
Конфликт слияния - это ожидаемый результат, поскольку и вы, и ваш партнер изменили одни и те же строки, и это именно то, что вам нужно, чтобы не перезаписывать изменения друг друга. Вам просто нужно разрешить конфликт слияния, прежде чем нажимать. Единственный раз, когда вы перезаписываете изменения друг друга, это если вы отбрасываете изменения других лиц и принимаете свои изменения при разрешении слияния.
Вы можете использовать ряд инструментов слияния, например kdiff, diffmerge и т. д., которые помогут вам выбрать, какие строки добавить, чтобы вы не перезаписывали изменения друг друга.
Прежде всего, давайте придерживаться терминологии git: вы можете merge
ветки и push
или fetch
их на / с сервера (remote
).
Поэтому, если у вас возникли конфликты при отправке на remome, вам нужно fetch
внести изменения с пульта дистанционного управления, merge
их локально и push
обратно в источник ( remote) ваш коммит и, почти всегда, «коммит слияния».
По поводу вашего вопроса в шапке:
Отправить только измененную строку в файл
Да, можно stage
и commit
только один hunk
(несколько строк кода) вместо всего файла. См. git add -p
. Или, если вы предпочитаете графический интерфейс, насколько я помню, официальный клиент для github поддерживает коммит по кускам.
Думаю, вам нужно небольшое пояснение. Предположим, что команда состоит из 2 человек ( A – B ), и они пишут код в один и тот же день.
- A фиксирует свои изменения и затем отправляет их в удаленный репозиторий;
- B фиксирует свои изменения, а затем отправляет их в удаленный репозиторий после A;
Когда B нажимает, его локальный код не согласован с кодом удаленного репозитория, поскольку в истории есть новый коммит. Пользователь B вынужден вытащить новую фиксацию перед отправкой и в конечном итоге разрешить локально конфликт слияния.
Затем B может также отправить в удаленный репозиторий, а A может получить новые изменения, сделанные B.
Надеюсь, я объяснил.
Похожие вопросы
Новые вопросы
git
Git — это распределенная система контроля версий с открытым исходным кодом (DVCS). Используйте этот тег для вопросов об использовании Git и рабочих процессах. Не используйте этот тег для общих вопросов по программированию, связанных с репозиторием Git. Не используйте этот тег для вопросов GitHub/GitHub Actions, не связанных с использованием git; вместо этого используйте [github] или [github-actions]. Не используйте тег [github] для проблем, связанных с Git, только потому, что репозиторий размещен на GitHub.