У меня есть суперпроект git, который ссылается на несколько подмодулей, и я пытаюсь заблокировать рабочий процесс для работы остальных участников моего проекта.
Для этого вопроса, скажем, мой суперпроект вызывается, supery
а подмодуль называетсяsubby
. (Тогда это упрощение того, что я пытаюсь сделать ... На самом деле я не использую ветки для версий, но я подумал, что будет проще всего задать вопрос.)
В моей основной ветке supery
тег v1.0
проекта git указан subby
как подмодуль. Ветка supery
называется one.one
и изменил ссылку подмодуля в точке с тегом v1.1
изsubby
.
Я могу без проблем работать в каждой из этих веток, но если я попытаюсь обновить one.one
ветку с изменениями изmaster
ветки, я получаю некоторые конфликты, и я не знаю, как их разрешить.
По сути, после некоторого git pull . master
времени работы в subby
ветке создается впечатление, что он создает дополнительные подмодули.
Перед тянущего / слияния, я получаю желаемый отклик git submodule
от one.one
филиала:
$ git checkout master
$ git submodule
qw3rty...321e subby (v1.0)
$ git checkout one.one
$ git submodule
asdfgh...456d subby (v1.1)
Но после вытягивания при запуске он добавляет дополнительные подмодули git submodule
:
$ git pull . master
Auto-merged schema
CONFLICT (submodule): Merge conflict in subby - needs qu3rty...321e
Automatic merge failed; fix conflicts and then commit the results.
$ git submodule
qw3rty...321e subby (v1.0)
asdfgh...456d subby (v1.1)
zxcvbn...7890 subby (v1.1~1)
Как удалить / игнорировать нежелательные ссылки на подмодули и зафиксировать конфликты и изменения? Или есть параметр, который я могу использовать с моим оригиналом git pull
, который игнорирует мои подмодули?
источник
added by us: ../Mono.Cecil
в ,git status
ноgit add
иgit rm
потерпел неудачу с ,Mono.Cecil: needs merge, pathspec 'Mono.Cecil/' did not match any files
потому что это была просто пустая папка и мерзавец только действительно работает с файлами.git checkout
дал мнеMono.Cecil: needs merge, error: you need to resolve your current index first
,git submodule update
отдалSkipping unmerged submodule Mono.Cecil
иgit checkout master Mono.Cecil
НАКОНЕЦ исправил. Основная проблема:git status
предложение неверное, поэтому выберите ветку и возьмите ее копию из папки сcheckout
!git checkout --ours SUBMOD
иgit add SUBMOD
и другие, но в итогеgit checkout master SUBMOD
исправил конфликт. Этот комментарий, вероятно, должен быть ответом, а не комментарием ... :)Ну, технически это не управляет конфликтами с подмодулями (то есть: оставьте это, но не то), но я нашел способ продолжить работу ... и все, что мне нужно было сделать, это обратить внимание на мой
git status
вывод и сбросить подмодули:Это сбросит подмодуль до фиксации перед вытягиванием. Что в данном случае именно то, что я хотел. А в других случаях, когда мне нужны изменения, применяемые к подмодулю, я буду обрабатывать их с помощью стандартных рабочих процессов подмодуля (мастер оформления заказа, извлечение желаемого тега и т. Д.).
источник
Я немного боролся с ответами на этот вопрос, и мне тоже не повезло с ответами в аналогичном сообщении SO . Вот что сработало для меня - учитывая, что в моем случае подмодуль поддерживался другой командой, поэтому конфликт возник из-за разных версий подмодуля в главном и моем локальном филиале проекта, над которым я работал:
git status
- отметить папку подмодуля с конфликтамиСбросьте подмодуль до версии, которая была последней зафиксирована в текущей ветке:
git reset HEAD path/to/submodule
На этом этапе у вас есть бесконфликтная версия вашего подмодуля, которую вы теперь можете обновить до последней версии в репозитории подмодуля:
А теперь вы можете
commit
это сделать и вернуться к работе.источник
Сначала найдите хеш, на который будет ссылаться ваш подмодуль. затем беги
Это помогло мне привести мой подмодуль к правильной ссылке на хэш и продолжить работу без каких-либо дальнейших конфликтов.
источник
У меня была эта проблема с
git rebase -i origin/master
веткой. Я хотел взять мастер-версию подмодуля ref, поэтому просто сделал:git reset master path/to/submodule
а потом
git rebase --continue
Это решило проблему для меня.
источник
Получил помощь от этого обсуждения. В моем случае
работал у меня :)
источник
В моем родительском каталоге я вижу:
Так что я только что сделал это
источник