2013-04-09 3 views
0

Из того, что я узнал о here подмодулях, теперь я могу закатить подмодули обратно вправо совершить с помощьюGit: узнать, какая ветка содержит фиксацию и проверить ее?

git submodule update --recursive 

однако, теперь подмодулей никогда (редко?) В отрасли. I думаю, что то, что ветвь нуждается в подмодулях, не сохраняется. Во всяком случае, я могу использовать в подмодуле

git branch --contains HEAD 

в подмодуле и выяснить его ветку, а затем переключиться на нее. Есть ли встроенный способ? Моя цель - вернуться к ветке, которая содержит фиксацию (если она есть).

ответ

1

По умолчанию Git не отслеживает подмодули ветвями, он отслеживает их путем фиксации. Таким образом, git submodule update приведет к тому, что подмодули будут находиться в отдельном состоянии HEAD (аналогично тому, как если вы используете git checkout конкретный хэш фиксации). Прежде чем выполнять какую-либо работу, вам нужно обязательно проверить филиал, иначе все может стать беспорядочным.

Начиная с Git 1.8.2, теперь вы можете иметь подмодули. Этот параметр должен быть указан при добавлении подмодуля:

git submodule add -b master <git repo url>

Если вы отслеживаете подмодули через ветвь, вы хотите добавить --remote к вызову обновления:

git submodule update --remote

Вы Подробнее о отслеживании подмодулей можно узнать через филиалы here и here.

+0

+1 и лучший ответ, пока я не испытаю его;) Спасибо! –

+0

@Yar Я должен отметить, что у меня есть * не * проверенный этот метод, особенно когда речь заходит о откате (поскольку ваш предыдущий вопрос заявлял, что вы делаете), поэтому мне определенно интересно узнать, работает ли оно так, как ожидалось. Мягко говоря, субмодули всегда, er, * adventure *. – redhotvengeance

+0

Понял. Я только что обновил git 1.8.2, чтобы проверить его, но предыдущий ответ получил мне 99% от того, что мне нужно было получить. Я мог бы просто создать еще один маленький скрипт под названием 'git-checkout-branch-that-contains-head' (это его полное имя) и назвать его днем. ;) –

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