GIT Add Enviando Arquivos para Staging Area

CommandNew FilesModified FilesDeleted FilesHidden FilesDescription
git add -A✔️✔️✔️✔️Stage all files from top till down folders
git add .✔️✔️✔️✔️Stage all files under current folder and all subfolders
git add *✔️✔️✔️Same as git add . but excludes hidden files
git add –ignore-removal .✔️✔️✔️Same as git add . but excludes deleted files
git add -u✔️✔️✔️Same as git add -A but excludes untracked files
git add -A .✔️✔️✔️✔️Same as git add .
git add -u .✔️✔️✔️Mixes git add . and git add -u means it works under current folder and its subfolders only
git add $(git ls-files -o –exclude-standard)✔️Stage only untracked files from top till down folders

O comando git add é bastante versátil e suas opções permitem adequar seu comportamento conforme a necessidade do momento.

Isto é bom do ponto de vista de funcionalidade pois apenas adicionando flags podemos ajustar para o melhor resultado. Do ponto de vista de memorização pode ser um pouco complicado até que você consiga vincular as flags necessárias com o comportamento esperado.

Resolvi fazer um tabela no estilo CheatSheet para poder consultar rapidamente sempre que precisar relembrar uma combinação.

Quando estiver em dúvida que opção usar, lembre que você pode usar o bom e velho caminho completo para incluir um único arquivo.

git add full/path/to/my/file/from/current/folder.file

E aí? Vai uma CheatSheet?!

GIT Reset Eliminando um Commit da sua Branch

-- before proceeding be sure working area is clean
git status 

-- eliminate commit and throw away all changes
git reset --hard HEAD~1

-- or if you want to reuse your changes
-- eliminate commit but keep changes at working area
git reset --soft HEAD~1

Em algumas situações acabamos por introduzir um commit indesejado numa branch. Então o que fazer?

Fácil, o RESET está aí pra isso mesmo.

Usando a opção –hard estamos indicando que as alterações desfeitas sejam jogadas fora, ou seja, você usa esta opção quando desistiu mesmo e quer recomeçar o trabalho do zero.

Já a opção –soft estamos indicando que as alterações desfeitas permaneçam nos arquivos da working area para que você possa ainda utilizá-los antes de um novo commit.

Vale lembrar que estamos sacando fora commits do topo da pilha. Na verdade podemos sacar vários commits de uma só vez mas sempre será a partir do topo e em sequência.

-- eliminate the top 5 commits in the stack at once
git reset --hard HEAD~5

Para sacar mais de um commit por vez basta ajustarmos o HEAD~{n} onde n é a quantidade de commits a serem removidos.

É isso, mais fácil que cortar manteiga quente!

GIT Reset Para Unificar Vários Commits em um Único Commit

git reset --soft HEAD~2 
git commit -m "new commit message"
git push -f

O jeito mais rápido para se unificar vários commits num único commit é usando o git reset. Pra quem não sabe o nome desta operação é SQUASH, mas o GIT não tem uma comando git squash como muitos podem pensar.

Apesar de muitos artigos desaconselharem o uso do RESET por vários motivos, esta sequência de comandos é inofensiva e muito fácil de realizar.

No exemplo acima basicamente o reset desfaz os últimos 2 commits indicados em HEAD~2 sendo que o –soft indica para manter os arquivos impactados na working area.

Na sequência basta realizar um novo commit com todos os arquivos contendo as alterações dos commits desfeitos. Uma nova mensagem precisa ser informada para este novo commit.

Simples, rápido e eficiente!