estrutura git
1. Inicialize o warehouse e gere a pasta .git
git init
2. Adicione à área de armazenamento temporário
git add test1.txt
-A pode enviar todas as alterações de uma vez
3. Adicionar ao armazém local
git commit –m “第一次提交”
-m é seguido por uma descrição
4. Visualize o status atual do armazém
git status
5. Veja a comparação antes e depois do arquivo modificado
git diff test1.txt
6. Visualize registros de operação
git log
* Verifique o número curto da versão e produza uma linha
git log --oneline --pretty
* Ver diagrama de ramificação
git log --graph
7. Versão de reversão
(1) Volte uma vez
$ git reset --hard HEAD^
(2) Reverter duas vezes
$ git reset --hard HEAD^^
Muitas vezes
, é claro, é mais fácil escrever 100 ^ para as 100 versões anteriores, então é escrito como HEAD~100,
(3) Reverter para uma determinada versão de acordo com o número da versão
git reset --hard a0016a25 // 可以不用输全
8. Como cancelar a reversão
(1) A janela da linha de comando não foi fechada
Após a reversão, se você souber o ID do número da versão enviado antes, poderá voltar antes da reversão, e o ID do número da versão não precisa ser escrito por completo
(2) A janela da linha de comando foi fechada
git reflog 记录你的每一次命令
9. Veja a diferença entre a versão mais recente no espaço de trabalho e no repositório
O rastreamento do Git gerencia modificações em vez de arquivos.
O envio de confirmação do Git enviará apenas arquivos na área de armazenamento temporário. Os arquivos na área de armazenamento temporário que não foram enviados não serão salvos no armazém local.
Veja a diferença entre a versão mais recente no espaço de trabalho e o comando do repositório:
git diff HEAD -- test1.txt
10. Desfazer modificação
(1) Se a modificação não tiver sido submetida à área de armazenamento temporário
git checkout -- test1.txt
(2) Se a modificação tiver sido submetida à área de armazenamento temporário
Primeiro desfaça a modificação da área de armazenamento temporário
git reset HEAD test1.txt
Use a finalização da compra novamente
git checkout -- test1.txt
11. Excluir
O comando rm é para excluir um arquivo no espaço de trabalho.
git rm é para excluir um arquivo e enviar a modificação do arquivo excluído para a área de armazenamento temporário
. É equivalente a git add após excluir o arquivo e, em seguida, salvar a modificação .
capaz de passar
git checkout -- test1.txt
recuperar
12*, conecte-se ao armazém remoto
Semelhante ao gitee github criptografado por ssh durante a transmissão
Etapa 1: Crie uma chave SSH.
No diretório inicial do usuário, verifique se existe um diretório .ssh. Se sim, verifique se existem dois arquivos id_rsa e id_rsa.pub neste diretório. Se você já os possui, pode pular para a próxima etapa. Caso contrário, abra o Shell (abra Git Bash no Windows) e
crie uma chave SSH:
$ ssh-keygen -t rsa -C "[email protected]"
Você precisa substituir o endereço de e-mail pelo seu próprio endereço de e-mail e, em seguida, pressionar Enter até o fim para usar o valor padrão. Como esta chave não é usada para fins militares, não há necessidade de definir uma senha.
Se tudo correr bem, você pode encontrar o diretório .ssh no diretório inicial do usuário, e há dois arquivos id_rsa e id_rsa.pub nele. Esses dois são o par de chaves secretas da chave SSH. id_rsa é a chave privada e não pode ser vazou.id_rsa.pub É a chave pública, você pode contar a qualquer pessoa com confiança .
Passo 2 Tome o gitee como exemplo, basta colar a chave pública
A razão pela qual o GitHub precisa da chave SSH
é porque o GitHub precisa identificar que o commit que você enviou foi realmente enviado por você, não pela representação de outra pessoa, e o Git suporta o protocolo SSH, portanto, desde que o GitHub conheça sua chave pública, você pode confirmar isso só você pode empurrar.
Claro, o GitHub permite adicionar várias chaves. Suponha que você tenha vários computadores e envie na empresa por um tempo, e envie em casa por um tempo, contanto que adicione a chave de cada computador ao GitHub, você pode enviar para o GitHub em cada computador.
13*. Associar o armazém remoto ao armazém local (associar ao armazém remoto quando houver um armazém local)
estabelecer associação
(1) Estabelecer a associação do armazém remoto
git remote add origin 仓库ssh地址
(2) Envio de conteúdo
git push -u origin master
Como a biblioteca remota está vazia, quando enviamos o branch master pela primeira vez, adicionamos o parâmetro -u. O Git não apenas enviará o conteúdo do branch master local para o novo branch master remoto, mas também enviará o master local branch e o remoto O branch master está associado e o comando pode ser simplificado e usado diretamente ao empurrar ou puxar no futuro
git push origin master
Excluir biblioteca remota
Visualize informações da biblioteca remota:
git remove -v
Em seguida, exclua pelo nome
git remote rm origin 仓库名
14*, Clonar de um repositório remoto (criar um repositório remotamente, clonar diretamente, a maioria faz isso)
git clone <http或者ssh地址>
15. Gestão de filiais
(1) Criar branch dev
git checkout -b dev
equivalente a
git branch dev // 创建
git checkout dev // 切换
commitar branch remoto
git push -u origin master
git push --set-upstream origin <branch>
(2) Ver filial
git branch
(3) Mesclar o branch para mesclar a modificação do desenvolvedor no master
Depois de mudar para master
git merge dev
Ao mesclar ramificações, o Git usará o modo Fast forward se possível, mas neste modo, após excluir a ramificação, as informações da ramificação serão perdidas.
Se você deseja desabilitar à força o modo Fast forward, o Git irá gerar um novo commit ao mesclar, para que as informações do branch possam ser vistas no histórico do branch.
Maneiras de desativar o commit expresso
git merge --no-ff feature
**
(4) Excluir branch dev
excluir filial local
git branch -d dev
excluir filial remota
git push origin --delete <branch> -d -D
O método switch alterna ramificações.
Notamos que a alternância de ramificações usa o nome da ramificação git checkout, enquanto a modificação de desfazer mencionada acima é git checkout – nome do arquivo. O mesmo comando tem duas funções, o que é realmente um pouco confuso.
Na verdade, é mais científico usar switch para a ação de trocar de ramo. Portanto, a versão mais recente do Git fornece um novo comando git switch para alternar ramificações:
para criar e alternar para uma nova ramificação dev, você pode usar:
git switch -c dev
Para mudar diretamente para o branch master existente, você pode usar:
git switch master
16. Empurrar empurrar, puxar puxar (buscar + mesclar)
git pull origin 分支名
git push origin 分支名
17. A razão pela qual .gitignore falha
O diretório ou arquivo é adicionado à regra de ignorar. Após defini-lo de acordo com o método acima, verifica-se que ele não tem efeito. O motivo é que .of.
resolver:
(1) Limpe o cache
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push -u origin master
(2) Exclua os arquivos correspondentes no armazém remoto
18. Sintaxe do gitignore
(1) Regras
空格不匹配任意文件,可作为分隔符,可用反斜杠转义
开头的文件标识注释,可以使用反斜杠进行转义
! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义
/ 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
/ 开始的模式匹配项目跟目录
如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录
** 匹配多级目录,可在开始,中间,结束
? 通用匹配单个字符
* 通用匹配零个或多个字符
[] 通用匹配单个字符列表
(2) Exemplo:
bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: 忽略根目录下的bin文件
/*.c: 忽略 cat.c,不忽略 build/cat.c
debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj
**/foo: 忽略/foo, a/foo, a/b/foo等
a/**/b: 忽略a/b, a/x/b, a/x/y/b等
!/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件
*.log: 忽略所有 .log 文件
config.php: 忽略当前路径的 config.php 文件
19. Passos para resolver conflitos
redefinir
20. Aplicação de git stash
Ao desenvolver um requisito a sozinho, o desenvolvimento não foi concluído e há um requisito b mais urgente que tem uma prioridade mais alta que a. Agora, porque o requisito existente não foi desenvolvido, então se você não quiser se comprometer uma versão, você pode usar o comando git stash para armazenar em cache e remover o código modificado.
(1)git stash
git stash // 直接缓存,缓存名称为最新一次commit的内容,如果没有本地提交则是拉远程仓库是的commit内容
git stash save "xxx" // 加上自己的注释进行缓存
stash só funcionará em arquivos rastreados pelo git
Como mostrado na imagem:
a. Primeiro verifique o status do arquivo
b. Agora execute o arquivo de armazenamento temporário git stash git stash list para visualizar a lista em cache
c. Verifique o status do arquivo novamente e descubra que o arquivo recém-adicionado não foi armazenado em cache e excluído
Conclusão: o arquivo recém-adicionado após o stash não entra no cache. Isso ocorre porque o git não rastreou o arquivo recém-adicionado. Você precisa executar git add <nome do arquivo> para permitir que o git rastreie esse arquivo e, em seguida, executar stash para operar o novo arquivo.
(2) lista de estoque git
retornar lista em cache
(3) git stash pop
Coloque o conteúdo mais recente na pilha e aplique-o à ramificação atual e exclua os registros no heap.
Pop exclui o cache na pilha
. Se o conteúdo exibido entrar em conflito, o git interromperá o pop e informará que você precisa entrar em conflito Solução
Você também pode especificar os registros na pilha adicionando o nome em git stash list após git stash pop
git stash pop stash@{0}
(4) git stash aplicar
Semelhante ao pop, mas não excluirá esse cache na pilha , adequado para armazenar aplicativos em cache em várias ramificações
e também pode ser especificado
git stash apply stash@{0}
(5) git stash drop/git stash limpo
excluir cache
git stash drop [名] // 删除单个缓存 举例git stash drop stash@{0}
git stash clear // 全清
(7)git stash show
git stash show [nome] // mostra a diferença com o branch atual
git stash show stash
(8) ramo git stash
Especifique o cache mais recente para criar uma ramificação
21. Altere o endereço do armazém remoto do armazém local atual
git remote set-url origin <远程仓库地址>