git submodule
git
Uso
git submodule update --init --recursiveFixa outro repositório em um commit dentro do seu; um clone comum deixa a pasta vazia até update --init, e o pai aponta para um commit, não para um branch.
Opções comuns
| Opção | Significado |
|---|---|
| add <url> <path> | pin another repository at a path |
| update --init | fill in a submodule folder that a clone left empty |
| --recursive | go into submodules of submodules |
| update --remote | move the pin to the tip of the tracked branch |
| status | the commit each submodule sits at |
| deinit <path> | unregister it |
| foreach <cmd> | run a command in each one |
Exemplos
git submodule update --init --recursivethe command that fills empty submodule folders after a clone
git submodule add https://github.com/x/lib.git vendor/libadds a dependency as a submodule
git submodule update --remoteupdates the pinned commit to the branch tip
O confuso é que desfazer tem várias formas: mover para onde um branch aponta não é o mesmo que criar um commit que reverte.
Como ler
- Os colchetes [ ] marcam uma parte que você pode omitir.
- As reticências … indicam que você pode listar vários.
- As opções diferenciam maiúsculas: em alguns comandos -r e -R fazem coisas diferentes.
Perguntas
Q. O que git submodule faz?
Fixa outro repositório em um commit dentro do seu; um clone comum deixa a pasta vazia até update --init, e o pai aponta para um commit, não para um branch.
Q. Como se digita?
git submodule update --init --recursive — os colchetes marcam o que você pode omitir.
Q. Quantas opções vale a pena saber?
Aqui estão 7; a lista completa está em man git. Este comando fica em git.
Comandos relacionados
página man: man git-submodule