Git

Comandos Básicos

COMANDO

DESCRIÇÃO

git init <directory>

Cria um repositório local

git clone <url>

Clona um repositório pra a máquina local

git clone <url> -b <branch>

Clona um projeto de determinada branch. Por padrão é a master

git -c http.sslVerify=False clone <url>

Clona um repositório ignorando TLS / SSL (útil quando o servidor não possui um certificado válido)

git branch

Verifica a branch atual e as que branches que já foram utilizadas

git branch -a

Exibe todas as branches

git branch <branch>

Cria uma branch

git branch -D <branch>

Remove uma branch

git checkout <branch>

Alterando de branch

git checkout -b <new_branch>

Cria uma branch e deixa ela como o repositório de uso

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort

Verificando quem criou as branchs

git fetch

Atualiza os objetos e referências de outros repositórios

git add <file1> <file2> ... <file 10>

Adiciona arquivos para commit

git add .

Adiciona todos os arquivos para commit

git diff

Mostra o que foi alterado na brach atual

git diff <remote_branch> -- <file>

Comparando o arquivo atual com o mesmo em outra branch

git diff <branch1> <branch2>

Compara uma branch com outra

git commit -m '<messagem>'

Definindo mensagem de Commit

git push

Enviando arquivos para o server

git push -u origin <branch>

Enviando arquivos para o server em uma determnada branch

git merge <remote_branch>

Pega o código de uma branch remota e trás para a branch atual.

OBS.: Antes de executar esse comando, entre na branch atual e execute git pull

git stash ; git checkout <brach> ; git stash apply

Importando as modificações de uma branch para outra. Útil para cenários onde o Git pede para fazer um commit antes de alterar de branch

git reset --hard HEAD

Restaurando código para última versão da branch

git checkout HEAD -- <arquivo.txt>

Restaundo somente um arquivo para o estado do último commit

git reset --hard <id_commit>

Desfazendo commit ou merge

git log

Mostra Logs da Branch

git log --graph --decorate

Mostra Logs da Branch com uma árvore do lado

git log --graph --oneline --all

Mostrando a árvore do GIT

git log -p -- <file>

Vendo histórico de determinado arquivo.

OBS.: Remova o parâmetro -p para editar o diff

git reflog

Os logs de referência, ou "reflogs", registram quando as dicas de ramificações e outras referências foram atualizadas no repositório local

git reset --hard <commit> ; git reset --soft HEAD@{1} ; git commit -m "Revert to <commit>"

Voltando uma commit antigo

Baixando Git Exposto

É comum acharmos o subdiretório .git aberto e, caso o ache, execute o comando abaixo para baixar todo o projeto:

Depois podemos executar o comando git checkout -- para resetar o repositório, recuperando todos os arquivos.

Gitdumper

Baixando o repositório GIT com todo o seu histórico. Note que será criado um diretório chamado .git no dentro do diretório de destino.

Após baixar o repositório, podemos filtrar pelos logs (commits) ou podemos usar o Extractor, para extrair todos os arquivos em suas respectivas versões. Indique o local que exportou o .git (no comando anterior).

Truffle Hog

Filtra o histórico de commits buscando dados sensíveis.

GitLeaks

Ferramenta que encontra senhas não criptografadas e outros tipos de dados sensíveis em repositórios Git que estão públicos.

GitMiner

OBS.: O cookie tem que ser extraído (pode ser direto do navegador) no fomato:

Verificar no site (github) todos os módulos que ele possui

Acessando Informações do Git Manualmente

Método 1

Esse método é utilizando quando temos o acesso aos arquivos do diretório .git/objects e nele podemos ver diretórios com nome que contém apenas dois caracteres.

Muitas vezes, o diretório .git ou .git/ está protegido, mas arquivos como .git/config e .git/HEAD estão disponíveis para leitura. Então para começar, vamos ler o arquivo .git/HEAD.

Irá ser retornado algo como ref: refs/heads/master. Então vamos acessar o valor de ref, da seguinte forma:

Com isso, será retornado um hash (parecido com um MD5) que servirá como base do nossa próxima URL. Vamos supor que o hash retornado do comando anterior, seja e62a9ebea4632f2f7746ad9a1bbf3424171fe410. Iremos pegar os dois primeiros caracteres (e6) para usarmos como nome do diretório e o restante (2a9ebea4632f2f7746ad9a1bbf3424171fe410) será o nome do arquivo. A URL irá ser a seguinte:

Note que será disponibilizado um arquivo para download. Esse arquivo não está legível no momento, mas podemos descomprimí-lo, para ler seu conteúdo.

Nesse momento, podemos ver nome(s) de arquivo(s) ou hash de commit. Caso tenha algum commit, repita o processo utilizando o hash informado para baixar um novo arquivo.

Caso consiga visualizar nomes de arquivos, devemos criar nosso próprio repositório local, pois o comando strings não consegue nos mostrar o hash de cada arquivo.

Após ter executado este último comando, conseguimos ver as hashes completas de cada arquivo, então podemos usar essa hash para realizar o download do arquivo, como fizemos anteriormente.

Método 2

Esse método é utilizando quando temos o acesso aos arquivos do diretório .git/objects e nele podemos ver um arquivo com extensão pack.

Baixe o arquivo .pack localizado em .git/objects. Acesso o diretório onde salvou o arquivo pack, e execute os seguintes comandos:

Note que agora há alguns (ou vários) diretórios com nomes que tenham apenas dois caracteres em .git/objects. Agora para ler o conteúdo dos arquivos basta executar o comando abaixo:

Sites

Last updated

Was this helpful?