Подмодуль 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 отключит (удалит из индекса) запись подмодуля config
  • git checkout origin/dev -- config будет гарантировать, что SHA1 этого конфига - это то, что было выбрано из источника (ветка dev), а не локальные изменения, которые вы могли бы сделать.

Вам не нужны другие команды. Я бы добавил git submodule update --checkout чтобы удостовериться, что содержимое подмодуля извлечено справа от SHA1.

Другие вопросы по тегам