2015-06-02 4 views
1

Есть ли способ использовать команды git для непосредственного обновления хэша подмодуля в индексе?git add subodule hash direct

Если нет, есть ли способ изменить его вручную, изменив текст где-нибудь в каталоге .git?

Я хочу указать конкретную фиксацию в подмодуле, но я хочу, чтобы вам не пришлось входить в этот подмодуль, проверить фиксацию, добавить подмодуль к индексу и затем проверить исходное коммитирование в подмодуле , Например:

  1. cd <submod>
  2. git checkout <hash>
  3. cd ..
  4. git add <submod>
  5. cd <submod>
  6. git checkout <originalbranch>
    • Для определения <originalbranch> Progra матически может потребоваться еще несколько команд.

Конечно, все это может быть сценарий, но так как состояние подмодуль захватывается в индексе через один хэш, это должно быть возможно иметь одну команду, чтобы сделать это без этого длительного ненужного потока фактической проверки фиксации.

+0

Я не думаю, что '(cd subodule/path; git checkout ); git commit -m 'обновленный подмодуль подмодуля'/путь' ужасно длинный. Это две команды git и 'cd'. – larsks

+0

@larsks. Вам не хватало еще нескольких необходимых команд. Я обновил этот вопрос, чтобы проиллюстрировать больше желания альтернативной команды. – mattgately

ответ

2

Сбор полезные крупицы информации из нескольких мест, которые привели меня найти простое решение, один вкладыш, который делает именно то, что задает вопрос:

git update-index --cacheinfo 160000 <hash> <submod> 

Обратите внимание, что 160000 является режим из подмодуля gitlinks. Не уверен, что требуется включить его, но я подтвердил, что он работает.

+1

'update-index' также будет считываться со стандартного ввода, поэтому вы можете делать несколько подмодулей в одном вызове. – onionjake

Смежные вопросы