Подмодуль git - игнорирование изменений
Я делаю это все время:
git add .
git add -A
git commit -am "foobar"
это добавляет все, так что все мои изменения находятся в стадии разработки, но у нас есть подмодуль git в каталоге config.
Я использовал несколько из этих команд, чтобы "избавиться от изменений в директории config":
git reset -- config
git checkout -- config
git checkout origin/dev config
git reset HEAD config
Кто-нибудь может объяснить, что они делают? Я даже не уверен, что последняя команда делает то, что я думаю.
1 ответ
Во-первых, вам не нужно повторять git add. и git добавить -A. Они оба добавляют все, если вы находитесь в корневой папке вашего репо.
Во-вторых, использовать git add -p
вместо этого: вы сможете игнорировать изменения в папке коммита submodule таким образом ( начиная с Git 2.17). И вы добавите только то, что вам нужно для следующего коммита, делая меньшие, более детальные коммиты.
Но если вы добавили добавленный конфиг и еще не зафиксировали, то:
git reset config
отключит (удалит из индекса) запись подмодуля configgit checkout origin/dev -- config
будет гарантировать, что SHA1 этого конфига - это то, что было выбрано из источника (ветка dev), а не локальные изменения, которые вы могли бы сделать.
Вам не нужны другие команды. Я бы добавил git submodule update --checkout
чтобы удостовериться, что содержимое подмодуля извлечено справа от SHA1.