2009-09-30 6 views

Respuesta

4

Git no tiene la noción de recuperar un solo archivo. Siempre mueve commits a través de la red.

Una vez que haya realizado un git clone de algún repositorio remoto, puede git checkout remotename/branch tener las últimas versiones de archivos en esa rama desprotegidas en su copia de trabajo. Si desea modificarlos, debe git checkout -b <yourbranchname> remotename/branch para iniciar una sucursal local. Esto podría hacerse mejor como

git branch --track mybranchname remotename/branchname 
git checkout mybranchname 

Para que su rama local "pista" de la rama remota, y por defecto a empujar y tirar de esa rama.

15

En primer lugar, una nota: el repositorio remoto puede tener más de una rama; también los medios HEAD (para el desarrollo local y las sucursales locales) están actualmente desprotegidos de la sucursal, y para la sucursal remota de seguimiento remoto (referencia simbólica) remote/HEAD significa la sucursal predeterminada en remoto. No hay tal cosa como 'JEFE de rama'; HEAD es un puntero a la bifurcación (o a veces a un commit).

En segundo lugar, Git funciona (como Novelocrat wrote) en todo el nivel del árbol (todos los archivos en el repositorio). En Git, compras una sucursal (aunque también puedes descargar una versión de archivo desde alguna rama al directorio de trabajo, es menos la operación de commkon).


En Git puedes crear una nueva confirmación solo en la parte superior de alguna rama local. No puede crear confirmaciones directamente en las sucursales de seguimiento remoto, ya que están destinadas a seguir las ramas del repositorio remoto (y perdería su trabajo en la recuperación).

Por lo tanto simple "git checkout origin" (suponiendo que a distancia se llama origin), que es de acceso directo para "git checkout origin/HEAD", que es por lo general "git checkout origin/master" habría checkout de un estado de rama de seguimiento remoto en rama sin nombre, llamados separado CABEZA. Esta es una buena solución si solo desea ver/explorar el estado de la sucursal de seguimiento remoto.

Si utiliza "git checkout --track origin/master" crearía rama local master, que está destinado a seguimiento (pista) a distancia de seguimiento de la ramaorigin/master. Tenga en cuenta que git-clone configura automáticamente dicha rama local (generalmente master) para la rama predeterminada (origin/HEAD) del control remoto origin (generalmente origin/master), por lo que no tendría que hacer esto. Luego simple "git pull" cuando en la rama master se buscará (si es necesario), e intente combinar sus cambios locales con los cambios en la rama respectiva en el repositorio remoto. Si no hubo cambios en el control remoto, se trata de un estado "actualizado" y su sucursal local no cambiaría; si no hubo cambios en su sucursal local pero se encontraban en remoto, entonces la sucursal local simplemente avanza al estado de la sucursal de seguimiento remoto, que se denomina "avance rápido". Puede pensar en "git pull" aquí como un equivalente muy, muy aproximado de "svn update".

También puede forzar a su sucursal local a rebobinar al estado de la sucursal de seguimiento remoto con "git reset --hard origin".Tenga en cuenta que --hard significa aquí forzar la sobrescritura del directorio de trabajo, por lo que se perderán los cambios no realizados. Use con cuidado.

Por último, si desea echa un vistazo a un solo archivo desde la rama de seguimiento remoto (es decir, tener en la versión de directorio de trabajo del archivo como en la rama de seguimiento remoto), simplemente puede usar la forma 'pathspec' git-checkout, a saber, "git checkout origin -- file". Si solo desea ver cómo se ve el archivo en la rama de seguimiento remoto, use "git show origin:path/to/file".

HTH

Cuestiones relacionadas