Solo voy a lo que he leído en SO, así que perdóname, pero todo lo que leo dice que una de las principales ventajas de Git sobre Subversion es que Git le da todo el código fuente al desarrollador localmente, sin tener que hacer nada en el servidor.
Con mi uso limitado de SVN y TortoiseSVN, tenía todo el código fuente, o al menos pensé que lo tenía. Por ejemplo, tengo un sitio web. Lo subo a SVN. Todavía estoy ejecutando mi sitio web localmente, ¿no? Si alguien envía un cambio y no estoy conectado, no importaría si tuviera Git o no, hasta que me vuelva a conectar al servidor.
No entiendo. No estoy pidiendo una repetición de uno frente al otro, excepto este punto.
Respuestas:
La premisa que estás cuestionando realmente está mal:
Con Subversion y Git tienes tu código fuente localmente. Con Git, tiene tanto su código fuente como un repositorio en su máquina local.
Es algo parecido a esto.
Subversión:
Tu código <-> El repositorio
Git:
Su código <-> Su repositorio local <-> Un repositorio remoto (... <-> otro repositorio remoto, etc.)
Una de las ventajas que obtiene de esta estructura es que aún puede usar el control de origen y enviar los cambios locales a su repositorio local sin perturbar el trabajo de otros miembros del equipo (con quienes comparte el repositorio remoto).
Con Subversion, tendría que arriesgarse a romper la construcción para otras personas o sufrir un desarrollo local prolongado sin ningún control de fuente que termine con una gran confirmación (o más probablemente una reversión).
Con Git, por otro lado, puede enviar estos cambios a su repositorio local, ver registros y diferencias o sus cambios, y solo cuando sienta que está listo para ser compartido con el equipo empuje los cambios desde el local repositorio al remoto.
fuente
Git o Mercurial almacenan localmente todo su repositorio con todas las revisiones y ramas con nombre. Subversion solo almacena uno, generalmente la Revisión de la cabeza. Entonces, con Git y Mercurial, puede acceder al repositorio completo (es decir, su código fuente actual y su historial) incluso cuando su red se descompone con SVN, está restringido a la última revisión a la que actualizó.
fuente
La respuesta corta es esta: con git tienes todo tu código fuente, con subversion tienes toda la versión más reciente de tu código fuente.
Git guarda una copia del historial completo de su repositorio localmente. Con subversion todo el historial está en un servidor.
fuente
Creo que a lo que te estás refiriendo es que con SVN, todas tus acciones requieren comunicación con el servidor, mientras que GIT no. Con SVN, si desea bifurcar, bifurca en el servidor y despliega esa bifurcación. Con GIT, puede crear una sucursal local sin que el "servidor" lo sepa.
Tiene razón al decir que tiene el código fuente con SVN y GIT, pero con GIT, no tiene que haber un servidor centralizado que también contenga el código fuente. Con GIT, puede ser la ÚNICA persona con el código fuente, pero aún así puede realizar todas las funciones que haría con un VCS típico.
He escuchado argumentos en contra de GIT, y creo que esto puede ayudar con su pregunta, diciendo que, dado que no está obligado a comprometerse con un repositorio central, usted es el propietario de su código fuente hasta que se haya comprometido y lo haya enviado a su servidor, si tú tienes uno. Con SVN, la única forma de tener el control de versiones es comprometiéndose con el servidor, pero con GIT, podría potencialmente mantener todo en su máquina local y, si alguno falla, "podría perder todo" a pesar de que podría fácilmente perderá todos sus cambios con SVN si no se comprometió y su HDD también se bloqueó.
fuente
Si presiona diariamente, entonces el riesgo debe ser pequeño. Pero si se ve obligado a comprometerse diariamente con el servidor SVN, al final del día, puede hacer todo en un solo conjunto de cambios grande, que no separa cada cambio en pequeños pasos. Con git, se le recomienda que realice varias confirmaciones pequeñas. Al empujar, si se requiere la fusión, intente fusionar y empujar. Si no puede fusionarse en este momento, puede pasar a una nueva sucursal u otro repositorio en el servidor.
fuente