IntelliJ suporta git stashes, bem como seu próprio comando shelve integrado. Estes parecem ser quase idênticos em propósito e utilidade. Qual a diferença entre eles?
IntelliJ suporta git stashes, bem como seu próprio comando shelve integrado. Estes parecem ser quase idênticos em propósito e utilidade. Qual a diferença entre eles?
Respostas:
Da documentação do IntelliJ :
Na integração do Git, além de shelving e unshelving, "stashing" e "unstashing" são suportados respectivamente. Esses recursos têm muito em comum, a única diferença está na maneira como os patches são gerados e aplicados.
- Patches com mudanças escondidas são gerados pelo próprio Git. Para aplicá-los posteriormente, você não precisa do IntelliJ IDEA.
- Patches com alterações arquivadas são gerados pelo IntelliJ IDEA. Normalmente, eles também são aplicados por meio do IDE. Aplicar alterações arquivadas fora do IntelliJ IDEA também é possível, mas requer etapas adicionais.
git stash push
.
Eles são muito semelhantes, exceto:
Além disso, IMHO, shelve funciona um pouco mais rápido, especialmente em um grande projeto, quando muitos arquivos foram alterados.
Veja a documentação para mais informações.
git stash -- foo/bar.txt
Uma vantagem distinta que o Shelve do Intellij tem sobre o stash do Git simples é que usando o Shelve, você pode salvar alterações pertencentes a vários repositórios em uma lista de mudanças. Usando o stash, você precisaria fazer o stash / unstash em cada repo individualmente. Isso é muito útil em um grande projeto com vários módulos (cada um com seu próprio repo), onde um determinado trabalho de recurso pode cortar vários módulos (e, portanto, vários repos)
Aqui está o que a documentação diz
Armazenar alterações é muito semelhante a estantes. A única diferença está na forma como os patches são gerados e aplicados. Stashes são gerados pelo Git e podem ser aplicados de dentro do IntelliJ IDEA ou de fora dele. Patches com alterações arquivadas são gerados pelo IntelliJ IDEA e também são aplicados por meio do IDE. Além disso, o armazenamento envolve todas as alterações não confirmadas, enquanto quando você coloca alterações em uma prateleira, você pode selecionar algumas das mudanças locais em vez de arquivá-las todas.