Estou Registrando o meu estudo de git.
Para este primeiro post, utilizei o seguinte vídeo:
Git #1 - Conceitos e principais comandos de versionamento]
Utilitários Básicos do Git
- git config
- git help
- git init
- git status
- git add
- git add .
- git commit -m "mensagem curta"
- git commit
- gitignore
- git diff
- git log
- git log --oneline
- git commit -m "mensagem" --amend
- git reset HEAD~1 --soft
- git reset HEAD~1 --hard
- git checkout
- git rm
- git tag
- git show
Primeiros Passos: Config
$ git --version
$ git config --global user.name "Seu Nome"
$ git config --global user.email "seu_email@email.com"
$ git config --list
Usando a documentação: Help
$ git help
$ git help add
$ git help commit
Criando um diretório e iniciando o Git
$ mkdir -p ~/git/es2
$ cd ~/git/es2
$ git init
Criando um arquivo e verificando o status dele
$ touch file.txt
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
file.txt
nothing added to commit but untracked files present (use "git add" to track)
Adicionando o arquivo na Staging Area
(Trackeando/Monitorando o arquivo)
$ git add file.txt
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: file.txt
Trackeando vários arquivos ao mesmo tempo
De forma interativa:
$ git add -i
Ou adicionando tudo sem perguntar:
$ git add .
Enviando para o repositório local usando o git commit -m
para mensagem curta.
$ git commit -m "cria arquivo vazio de testes"
Enviando para o repositório local usando o git commit
para mensagem longa.
$ touch file2.txt
$ touch file3.txt
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
file2.txt
file3.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git add .
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file2.txt
new file: file3.txt
$ git commit
adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Changes to be committed:
# new file: file2.txt
# new file: file3.txt
#
~
~
~
~
~
~
~
~
~
~
~
~
~
-- INSERT --
Após escrever a mensagem, pressionar ESC
e digitar :wq!
e pressionar ENTER
.
Arquivo .gitignore
$ touch .gitignore
$ touch dep.out
$ ls -la
total 8
drwxr-xr-x 8 maiquipirollitome staff 256 Mar 12 11:55 .
drwxr-xr-x 3 maiquipirollitome staff 96 Mar 12 10:26 ..
drwxr-xr-x 12 maiquipirollitome staff 384 Mar 12 11:56 .git
-rw-r--r-- 1 maiquipirollitome staff 14 Mar 12 11:56 .gitignore
-rw-r--r-- 1 maiquipirollitome staff 0 Mar 12 11:55 dep.out
-rw-r--r-- 1 maiquipirollitome staff 0 Mar 12 10:35 file.txt
-rw-r--r-- 1 maiquipirollitome staff 0 Mar 12 11:27 file2.txt
-rw-r--r-- 1 maiquipirollitome staff 0 Mar 12 11:27 file3.txt
Escrevendo no arquivo .gitignore:
$ echo "dep.out" > .gitignore
ou todos os arquivos com final .out
$ echo "*.out" >> .gitignore
$ cat .gitignore
dep.out
*.out
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
$ git add .
$ git commit -m "adiciona gitignore"
Observando as alterações dos arquivos
$ echo "file content" > file4.txt
$ git add .
$ git commit -m "adiciona o arquivo file4 para teste de diff"
Adicionando uma nova linha no arquivo:
$ echo "New content" >> file4.txt
$ cat file4.txt
file content
New content
$ git diff
Após o comando acima, o conteúdo abaixo é mostrado:
diff --git a/file4.txt b/file4.txt
index dd59d09..91aea86 100644
--- a/file4.txt
+++ b/file4.txt
@@ -1 +1,2 @@
file content
+New content
(END)
OBS: pressione a tecla q
para sair.
Histórico dos commits realizados
$ git log
Após o comando acima, o conteúdo abaixo é mostrado:
commit be2c14b0e37a455b6eb689f956949af33aef2068 (HEAD -> master)
Author: Maiqui Pirolli Tomé <maiquitome@gmail.com>
Date: Sat Mar 12 13:12:39 2022 -0300
adiciona o arquivo file4
commit 79091dabdcdfc48d860c796ee1d003755c78e76d
Author: Maiqui Pirolli Tomé <maiquitome@gmail.com>
Date: Sat Mar 12 13:02:14 2022 -0300
adiciona gitignore
commit 443f35bbccda20cb8fd52681e027f52a2e8c7eb5
Author: Maiqui Pirolli Tomé <maiquitome@gmail.com>
Date: Sat Mar 12 11:33:22 2022 -0300
adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
commit 051e33bae593fde6c9b9e45ee4d2c0e1f8d19ace
Author: Maiqui Pirolli Tomé <maiquitome@gmail.com>
Date: Sat Mar 12 11:03:27 2022 -0300
:
Histórico de commits de forma resumida
$ git log --oneline
Após o comando acima, o conteúdo abaixo é mostrado:
be2c14b (HEAD -> master) adiciona o arquivo file4
79091da adiciona gitignore
443f35b adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
051e33b cria arquivo vazio de testes
(END)
Editando commits
Verificando qual arquivo não foi efetuado o commit:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file4.txt
no changes added to commit (use "git add" and/or "git commit -a")
Olhando o conteúdo do arquivo:
$ cat file4.txt
file content
New content
Adicionando uma linha pra arrumar depois:
$ echo "New linne" >> file4.txt
$ cat file4.txt
file content
New content
New linne
Efetuando commit:
$ git add .
$ git commit -m "adiciona nova linha"
Arrumando New linne
$ nano file4.txt
Trocando New linne
para New line
GNU nano 2.0.6 File: file4.txt Modified
file content
New content
New line
[ Read 3 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text^T To Spell
CRTL O
pra salvar
ENTER
pra confirmar
CTRL X
pra sair
$ cat file4.txt
file content
New content
New line
Subscrevendo o commit anterior:
$ git add .
$ git commit -m "adiciona nova linha" --amend
$ git log --oneline
Após o comando acima, conseguimos ver que existe apenas um commit com a mensagem adiciona nova linha
:
a80b808 (HEAD -> master) adiciona nova linha
be2c14b adiciona o arquivo file4
79091da adiciona gitignore
443f35b adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
051e33b cria arquivo vazio de testes
(END)
Desfazendo o último commit (--soft)
$ git log
Podemos ver que o último commit foi o adiciona nova linha
e antes o commit adiciona o arquivo file4
commit a80b808bd012d16a4a9fc426207e201b7ac4987e (HEAD -> master)
Author: Maiqui Pirolli Tomé <maiquitome@gmail.com>
Date: Sat Mar 12 13:56:10 2022 -0300
adiciona nova linha
commit be2c14b0e37a455b6eb689f956949af33aef2068
Author: Maiqui Pirolli Tomé <maiquitome@gmail.com>
Date: Sat Mar 12 13:12:39 2022 -0300
adiciona o arquivo file4
commit 79091dabdcdfc48d860c796ee1d003755c78e76d
Author: Maiqui Pirolli Tomé <maiquitome@gmail.com>
Date: Sat Mar 12 13:02:14 2022 -0300
adiciona gitignore
commit 443f35bbccda20cb8fd52681e027f52a2e8c7eb5
Author: Maiqui Pirolli Tomé <maiquitome@gmail.com>
Date: Sat Mar 12 11:33:22 2022 -0300
adiciona file2.txt e file3.txt vazios para testes de commit com mensagem lon:
Não temos nenhum arquivo para ser feito o commit.
$ git status
On branch master
nothing to commit, working tree clean
Para desfazer o último commit:
$ git reset HEAD~1 --soft
Após o ~
eu posso informar o número de commits que eu quero desfazer.
O comando --soft
informa pra voltar o arquivo pra Staging Area
pois eu ainda quero utilizá-lo.
Podemos ver que o commit mais recente foi desfeito, e o arquivo voltou para a Staging Area
.
$ git log --oneline
be2c14b (HEAD -> master) adiciona o arquivo file4
79091da adiciona gitignore
443f35b adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
051e33b cria arquivo vazio de testes
(END)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: file4.txt
Desfazendo o último commit (--hard)
Fazendo o commit novamente do file4.txt
:
$ git commit -m "aprimora file4"
$ git log --oneline
f30b8c4 (HEAD -> master) aprimora file4
be2c14b adiciona o arquivo file4
79091da adiciona gitignore
443f35b adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
051e33b cria arquivo vazio de testes
(END)
$ git reset HEAD~1 --hard
$ git log --oneline
be2c14b (HEAD -> master) adiciona o arquivo file4
79091da adiciona gitignore
443f35b adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
051e33b cria arquivo vazio de testes
(END)
A opção --hard
desfaz as mudanças.
$ cat file4.txt
file content
O arquivo não volta para a Staging Area
:
$ git status
On branch master
nothing to commit, working tree clean
Descartando alterações
$ echo "content" >> file4.txt
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file4.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ cat file4.txt
file content
content
Descartar essa alteração (removendo a linha 2):
$ git checkout file4.txt
$ cat file4.txt
file content
$ git status
On branch master
nothing to commit, working tree clean
Para descartar alterações de todos os arquivos modificados:
$ git checkout .
Adicionando arquivo deletado na Staging Area
Deletando o arquivo file.txt
$ rm -rf file.txt
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: file.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git rm file.txt
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: file.txt
$ git commit -m "remove arquivo file"
$ git status
On branch master
nothing to commit, working tree clean
Tag
Criando um rótulo:
$ git tag v1.0.0
$ git log --oneline
$ bd318ba (HEAD -> master, tag: v1.0.0) remove arquivo file
be2c14b adiciona o arquivo file4
79091da adiciona gitignore
443f35b adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
051e33b cria arquivo vazio de testes
(END)
Criando mais arquivos:
$ touch file5.txt
$ git add .
$ git commit -m "adiciona file5.txt"
$ touch file6.txt
$ git add .
$ git commit -m "adiciona file6.txt"
$ git log --oneline
1f353ef (HEAD -> master) adiciona file6.txt
eaf4c1a adiciona file5.txt
bd318ba (tag: v1.0.0) remove arquivo file
be2c14b adiciona o arquivo file4
79091da adiciona gitignore
443f35b adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
051e33b cria arquivo vazio de testes
(END)
Voltando para a tag v1.0.0
$ git checkout v1.0.0
$ git log --oneline
bd318ba (HEAD, tag: v1.0.0) remove arquivo file
be2c14b adiciona o arquivo file4
79091da adiciona gitignore
443f35b adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
051e33b cria arquivo vazio de testes
(END)
Voltando para a master
:
$ git checkout master
$ git log --oneline
1f353ef (HEAD -> master) adiciona file6.txt
eaf4c1a adiciona file5.txt
bd318ba (tag: v1.0.0) remove arquivo file
be2c14b adiciona o arquivo file4
79091da adiciona gitignore
443f35b adiciona file2.txt e file3.txt vazios para testes de commit com mensagem longa.
051e33b cria arquivo vazio de testes
(END)
Detalhando um commit: Show
Detalhando o primeiro commit:
$ git show 051e33b
commit 051e33bae593fde6c9b9e45ee4d2c0e1f8d19ace
Author: Maiqui Pirolli Tomé <maiquitome@gmail.com>
Date: Sat Mar 12 11:03:27 2022 -0300
cria arquivo vazio de testes
diff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..e69de29
(END)
Top comments (0)