Estou apenas seguindo o que li no SO, então me desculpe, mas tudo o que leio diz que uma grande vantagem do Git sobre o Subversion é que o Git fornece todo o código-fonte localmente ao desenvolvedor, sem ter que fazer nada. o servidor.
Com meu uso limitado de SVN e TortoiseSVN, eu tinha todo o código fonte, ou pelo menos pensei que tinha. Por exemplo, eu tenho um site. Eu o envio ao SVN. Ainda estou executando meu site localmente, não estou? Se alguém enviar uma alteração e eu não estiver conectado, não importaria se eu tinha o Git ou não, até me reconectar ao servidor.
Eu não entendo. Não estou pedindo uma reformulação de um contra o outro, exceto este ponto.
Respostas:
A premissa que você está questionando realmente está errada:
Com o Subversion e o Git, você tem seu código fonte localmente. Com o Git, você tem seu código-fonte e um repositório em sua máquina local.
É algo assim.
Subversão:
Seu código <-> O Repositório
Git:
Seu código <-> Seu repositório local <-> Um repositório remoto (... <-> outro repositório remoto, e assim por diante)
Um benefício que você obtém dessa estrutura é que você ainda pode usar o controle de origem e confirmar suas alterações locais no repositório local sem atrapalhar o trabalho de outros membros da equipe (com quem você compartilha o repositório remoto).
Com o Subversion, você teria que arriscar quebrar a compilação para outras pessoas ou sofrer desenvolvimento local prolongado sem nenhum controle de origem que termine com um enorme comprometimento (ou mais provavelmente uma reversão).
Com o Git, por outro lado, você se sentiria livre para confirmar essas alterações em seu repositório local, exibir logs e diffs ou suas alterações, e somente quando achar que está pronto para ser compartilhado com a equipe, envie as alterações do local repositório para o remoto.
fonte
Git ou Mercurial armazenam todo o seu repositório localmente com todas as revisões e ramificações nomeadas. O Subversion armazena apenas um - geralmente a Revisão Principal. Portanto, com o Git e o Mercurial, você pode acessar o repositório completo (ou seja, seu código-fonte atual e seu histórico), mesmo quando sua rede falha com o SVN, você fica restrito à última revisão que atualizou.
fonte
A resposta curta é esta: com o git você tem todo o seu código fonte, com o subversion você tem a versão mais recente do seu código fonte.
O Git mantém uma cópia de todo o histórico do seu repositório localmente. Com o subversion, todo o histórico está em um servidor.
fonte
Acho que o que você pode entender é que, com o SVN, todas as suas ações exigem comunicação com o servidor, enquanto o GIT não. Com o SVN, se você deseja ramificar, ramifica no servidor e puxa para baixo. Com o GIT, você pode criar uma filial local sem nunca ter o "servidor" a par.
Você está certo ao dizer que possui o código-fonte com o SVN e o GIT, mas com o GIT, não é necessário que haja um servidor centralizado que também contenha o código-fonte. Com o GIT, você pode ser a ÚNICA pessoa com o código-fonte, e ainda assim conseguir executar todas as funções que faria com um VCS típico.
Ouvi argumentos contra o GIT e acho que isso pode ajudar na sua pergunta, dizendo que, como você não precisa se comprometer com um repositório central, você é proprietário do seu código-fonte até que o tenha comprometido e o enviou ao servidor, se você tem um. Com o SVN, a única maneira de ter o controle de versão é comprometendo-se com o servidor, mas com o GIT, você pode potencialmente manter tudo em sua máquina local e, se algo der errado, você "pode perder tudo", mesmo que com a mesma facilidade. perca todas as suas alterações com o SVN se você não confirmar e o seu disco rígido também falhar.
fonte
Se você pressionar diariamente, o risco deve ser pequeno. Mas se você for forçado a confirmar diariamente no servidor SVN, no final do dia, poderá fazer tudo em um único grande conjunto de alterações, que não separa todas as alterações em pequenas etapas. Com o git, você é incentivado a fazer vários pequenos commit. Ao empurrar, se a mesclagem for necessária, tente mesclar e empurrar. Se você não conseguir mesclar no momento, poderá enviar para uma nova ramificação ou outro repositório no servidor.
fonte