Обновление субмодуля Git без потери моего кода - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок в Git, и теперь я нахожусь в такой ситуации:

Я студент информатики, и теперь у нас есть один git репозиторий (который находится на GitLab) из моего университета и в этом «основном» хранилище мы каждые две недели получаем новый проект (нам просто нужно завершить код sh). Проекты являются субмодулями в основном хранилище. Профессор обновляет основной репозиторий каждые 2 недели новым проектом (подмодулем).

С помощью git pull я могу обновить основной репозиторий и с помощью git submodule update --init --recursive я могу обновить свои подмодули. Если новый проект уже находится в моем главном репозитории, и я работаю над ним, профессор может, например, снова обновить ветку master этого подмодуля (исправления ошибок или аналогичные).

Что было бы лучшим решением обновить ветку и подмодуль master (если мой код почти завершен), не теряя мой код. Я прочитал что-то, что я могу создать новую локальную ветку и поработать над ней, и если появится обновление, я могу легко объединить свои изменения и это «исправление» в master. Но разве это не конфликт слияния? Я надеюсь, что вы поняли меня.

1 Ответ

0 голосов
/ 04 апреля 2020

добро пожаловать на Git приятель! Одна вещь, которую я хотел бы сказать, - это то, что было бы лучше использовать определенные c термины для репозиториев, а не расплывчатые термины, такие как "основной репозиторий" (вы новичок ie, так что на данный момент вас извиняют;)

Мы используем термин remote репозиторий для репозитория upstream ( т.е. ), ссылку на GitLab, которую вы увидите в своем браузере при открытии репо (сокращение от репозитория) на GitLab. находится на чужом компьютере (вероятно, у вашего профессора)). Репозиторий на вашем компьютере называется local репозитарием.

Если перейти к вашему вопросу, подход к полному обновлению локального кода с помощью апстрима будет следующим:

  1. Сделать git pull. Это внесет последние изменения с пульта и объединит их с вашим локальным репозиторием. Это может привести к конфликтам слияния, что совершенно нормально, поскольку конфликты слияния возникают, когда в одном и том же фрагменте кода происходят изменения. Вы можете обратиться к этому ответу, чтобы узнать больше о конфликтах слияния.
  2. Следуйте за ним с git submodule update --init --recursive. Это обновит ваши подмодули до точки, в которой ваш суперпроект, т.е. , каталог, содержащий весь проект, ожидает, что они будут.

Кроме того, если суперпроект имеет только подмодули и ничего больше, git submodule update --init --recursive будет достаточно.

Если вы хотите узнать больше о git или жаргоне, связанном с ним, вы также можете обратиться к этому !

Не стесняйтесь комментировать, если у вас есть какие-либо сомнения! :)

Best.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...