一, Git vs SVN
Git e SVN que é melhor o que é bom, todo mundo tem uma experiência diferente.
Git é uma distribuído, SVN é centralizado
Esta é a maior diferença entre Git e SVN. Se pudermos entender este conceito, ficar a conhecer a diferença mais básica entre os dois. Porque Git é distribuída, de modo Git trabalho suporte offline, muitas operações podem ser realizadas localmente, incluindo o lançamento do blockbuster será seguido por uma função de filial. O SVN deve ser ligado em rede para funcionar corretamente.
Git e conceitos mais complexos, simples SVN e acessível
Todo o controle de ambos os desenvolvedores Git e SVN devo admitir, comandos Git muito, a necessidade trabalho diário para ter add, cometer, status, buscar, empurrar, rebase, etc., para dominar, rebase e mesclagem deve também mestre diferença, buscar e puxar diferença, etc., além disso, existem cherry-pick, submodule, stash e outras funções, apenas ouvindo a estes termos que estão ao redor.
Neste contexto, a facilidade de utilização, SVN para iniciantes será mais melhor. Mas, por outro lado ver, meios Git comando multi-multi-função que, se pudermos agarrar o mais Git recursos, apreciar as maravilhas de que nunca vai voltar a encontrar a era SVN.
Git ramos baratos, SVN ramo caro
Em gerenciamento de versão, o ramo é muitas vezes funções usadas. Antes da versão de lançamento, você precisa publicar ramo, as necessidades de desenvolvimento de grande porte, ramo de funcionalidade de necessidade, haverá um grande ramo de desenvolvimento de equipe, ramo estável e assim por diante. Em grande processo de desenvolvimento de equipe, há muitas vezes são convidados a criar um ramo, e comutação ramo.
git branch é um ponteiro para um commit, os ramos SVN são diretório copiado. Este recurso permite alternar Git ramo muito rapidamente, e criar um custo muito baixo.
E há uma filial local do Git, SVN ramo não local. No processo de desenvolvimento real, muitas vezes encontro alguns dos códigos não terminou, mas a necessidade urgente de lidar com outras questões, se usarmos Git, você pode criar um código que é armazenado filial local não terminou até que o problema tenha sido resolvido, e depois voltar para o local, ramo continuar a completar o código.
Dois, conceitos básicos do Git
O núcleo é um Git fluxo de trabalho conceito.
- Workspace (Espaço de Trabalho) é um computador no diretório real.
- área de teste (Index), semelhante à área de cache, temporariamente salvar as alterações.
- Warehouse District (Repository), dividido em armazém armazém local e remoto.
Mudou de SVN para Git, o mais difícil de entender, e a maioria não entende é a área de teste e armazéns locais. uso hábil Git, vai achar que isso é simplesmente o desígnio de Deus, devido à existência de ambos, então um monte de trabalho para se tornar gerenciável.
Normalmente enviar o código de várias etapas:
- submissão add git da área de trabalho para a área de teste
- git commit para submeter-se a um armazém local a partir do zero
- git push ou git svn dcommit apresentados a partir do armazém local para o repositório remoto
Em geral, lembre-se o seguinte comando, você pode executar o trabalho diário (Foto da internet):
Três comandos, GIT-SVN comumente utilizados
Se o servidor usa SVN, Git, mas quer experimentar a filial local, a operação local offline e outras funções, você pode usar a função Git-SVN.
[GIT-SVN]
# Baixar um projeto SVN e toda a sua história de código, e é inicializado para Git repositório $ git svn clone - S [Repository] # ver a actual situação repositório de informações $ git svn # recuperar mudanças remoto de repositório de todos os ramos $ git svn busca # recuperar remoto que muda o branch atual, rebase e fusão com a filial local $ git svn rebase # carregamento a corrente ramo repositório local para o remoto repositório $ git svn dcommit # tração novo ramo, e se submeter a um controle remoto repositório cópia $ svn [ remote_branch] [new_remote_branch] - m [mensagem] # criação de filial local filial remota correspondente $ git checkout -b [local_branch] [ remote_branch]
Em quarto lugar, a inicialização
Desde o início desta seção, salvo indicação em contrário, os seguintes comandos são aplicáveis a Git e GIT- SVN. # No diretório atual para criar um novo repositório Git $ git init # download de um projeto e toda a sua história código [Git somente] $ git clone [url]
5, a configuração
# Enumerar todos configuração $ git config - L # para configurar comandar um Alias $ git config - , Ltd. Livre Aderir alias.co Caixa $ git configuração - , Ltd. Livre Aderir alias.ci a cometer $ git configuração - , Ltd. Livre Aderir alias.st Estado $ git configuração - , Ltd. Livre Aderir filial alias.br # definir as informações do usuário ao enviar o código de configuração $ git [- , Ltd. livre Aderir ] user.name " [nome] " $ git config [ - , Ltd. livre Aderir ] user.email " [endereço de email] "
perfil do usuário Git está localizado ~ / .gitconfig
arquivo de configuração único repositório Git localizado em ~ / $ PROJECT_PATH / .git / config
Em sexto lugar, adicionar ou remover arquivos
# Todos os arquivos adicionar o diretório atual para a área de preparo $ git o Add. # Adiciona os arquivos especificados para a área de preparo $ git Adicionar <file1> <file2> ... # Adiciona o diretório especificado para a área de teste, incluindo seus subdiretórios $ git Adicionar <dir> # apagar um arquivo espaço de trabalho e excluir a área de teste em uma RM $ git [arquivo1] [arquivo2] ... # parada rastrear o arquivo especificado, mas os restos de arquivos na área de trabalho $ git rm - - cache [arquivo] # arquivos renomear, e será renomeado para a área de staging $ git mv [arquivo-Original] [renomeado-file]
Adicione o nome do arquivo file1 para .gitignore arquivo, Git vai parar rastreamento estado file1.
sete ramos
# Lista todos os ramos locais $ git branch # Lista todos os ramos locais e remotos ramo $ git Branch - A # Criar um novo ramo, mas ainda permanecem na atual ramo ramo $ git [sucursal de nome] # criar um ramo e mudar para o ramo $ git checkout -b [new_branch] [-remoto ramo] # ligada a um ramo específico, e atualiza a área de trabalho $ git checkout [sucursal de nome] # fundir ramos para o atual branch $ git merge [ramo] # selecionando um commit , incorporado no atual ramo $ git Cereja- Pick [a cometer] # exclusão filial local, parâmetro -D para forçar a remoção ramo -d $ git branch [sucursal de nome] # exclusão filial remota $ git empurrar [remoto]: [ remote-branch]
Oito, submetidas
# Submetido à área de teste distrito do armazém $ git commit - m [a mensagem] # enviar alterar a área de trabalho e área temporária diretamente para o distrito do armazém $ git commit - A # mostrar todas diff ao enviar informações $ git commit - v # enviar temporariamente mudanças na área de memória para o distrito do armazém, fundiu modificada pela última vez, e última modificação das informações apresentadas $ git --amend o commit - m [a mensagem] # Carregar um ramo local para um remoto repositório especificado impulso $ git [remoto] [remoto -branch]
Nine, tração
# Download remoto repositório de todas as alterações (Git apenas) $ git fetch [Remote] # exibe todas repositório remoto (Git apenas) $ git remoto - v # informações de exibição para um repositório remoto (Git apenas) $ git remoto Mostrar [Remote] # adicionar um novo repositório remoto e nome (git apenas) $ git adicionar remoto [-remoto name] [url] # buscar alteração remota repositório, e mesclar com o ramo local, (git apenas), se usado git-SVN por favor, veja Seção $ git pull [remoto] [filiais] # buscar mudanças remoto de repositório, e com a fusão rebase filial local, (git apenas), se usado git-SVN, consulte Seção III $ git pull --rebase [remoto] [ramo]
Dez, revogação
# Restaurar arquivos para a área de trabalho da área de preparo designado $ git checkout [File] # todos os arquivos no diretório atual restaurar a área para a área de trabalho encenar $ git checkout. # Restaurar área de trabalho para especificar a cometer $ git checkout [a cometer] # Repor arquivo especificado área temporária, com a última confirmação consistente, mas a área de trabalho inalterada $ git REAJUSTE [arquivo] # redefinir a área de preparo para a área de trabalho, e consistente com o último commit $ git a redefinir - duro # reinicialização o ponteiro do ramo atual para o especificado cometer, ao mesmo tempo para redefinir a área de teste, mas a área de trabalho inalterada $ git REAJUSTE [commit] # repor o CABEÇA ramo corrente especificada cometer, ao mesmo tempo para redefinir a área de preparação e área de trabalho, designado cometer consistente com $ git RESET - Disco [a cometer] # Criar um novo commit, de revogar a designação do cometer $ git Revert [a cometer] # mudará não confirmadas sobre a área de armazenamento $ git stash de # restaurar o conteúdo da área de armazenamento para a área de trabalho atual $ Git stash de pop
XI inquérito
# Arquivos Ver espaço de trabalho para modificar o estado $ git status # arquivos Ver espaço de trabalho para modificar o conteúdo específico de $ git diff [arquivo] # ver a área de teste de conteúdo do arquivo $ git diff - cache [arquivo] # ver o log de alterações repositório git log $ # ver alguém cometer recorde $ git log --author = alguém # exibir o histórico de um conteúdo de arquivo específico log $ git - o p- [arquivo] # ver um commit específico de conteúdo mostram $ git [commit]