Tengo un proyecto con git, y solo quiero clonar o extraer un directorio específico, como myproject/javascript como lo hace subversion.
hacer algunos cambios, confirmar y volver a presionar.
¿Es posible?Cómo extraer el directorio específico con git
Respuesta
- CD en la parte superior de su copia de recompra
git fetch
git checkout HEAD path/to/your/dir/or/file
- Donde "
path/...
" en (3) se inicia en el directorio justo por debajo de la raíz de recompra que contiene su ".../file
"
- Donde "
Esta es la respuesta ... ¡gracias! – Paul
Acabo de darme cuenta de que entendí mal la pregunta. Mi respuesta, en cambio, aborda la forma de verificar un solo archivo, que luego se puede modificar y confirmar. – vergueishon
Has abordado el título de la pregunta, que es lo suficientemente bueno. Esto me acaba de salvar, así que, en lo que a mí respecta, esta es la respuesta correcta, especialmente porque este fue un éxito en Google para este problema. – Morgon
No es posible. Necesitas sacar todo el repositorio o nada.
A pesar de que necesita * buscar * todo, ¿podría ser de interés un tirón en un árbol de trabajo de pago disperso en este caso? Consulte http://stackoverflow.com/questions/2416815/how-to-git-pull-all-but-one-folder/2416991#2416991 – VonC
Solo para agregar esto, la razón por la que no puede extraer solo un directorio es porque git utiliza seguimiento semántico de datos, no seguimiento semántico de archivos, por lo que puede mover código (u otros datos) sin problemas dentro y fuera de los archivos sin tener que decirle al sistema de seguimiento de origen (hasta que actualice, por supuesto). Debido a esto, el código se puede mover dentro y fuera de directorios sin problemas también, por lo que agarrar solo un directorio no tiene mucho sentido. Espero que esto ayude. – OmnipotentEntity
La respuesta de vergueishon a continuación funcionó para mí. – Paul
Shingara tiene razón. Una explicación de este comportamiento se da en this mailing list thread. Si realmente quiere hacer esto, puede hacer que el directorio javascript sea un submódulo.
No respondió la pregunta en su comentario, proporcionó un enlace. Si el enlace alguna vez se apaga, su enlace es inútil, como es su respuesta. Además, lo que está en el enlace no es muy conciso y fácil de leer. Su respuesta sería útil si resumió o simplificó lo que estaba en el enlace. – leetNightshade
A veces, solo quiere echar un vistazo a las copias anteriores de los archivos sin la molestia de pasar por los diffs.
En tal caso, es tan fácil hacer un clon de un repositorio y verificar la confirmación específica que le interesa y echar un vistazo al subdirectorio en ese depósito clonado. Como todo es local, puede eliminar este clon cuando haya terminado.
Ya veo. Trataré de crear submódulos y ver si funciona para mí. Informaré los resultados. EDITAR: análisis y submódulos dispersos funcionó para mí.Los enlaces que he usado para leer acerca de (dada por VonC y Michel Jansen) son:
How to git-pull all but one folder
http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout
http://vmiklos.hu/blog/sparse-checkout-example-in-git-1-7
http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout
La función de submódulo de git no está particularmente bien implementada. Pueden ser muy incómodos y confusos para trabajar. Personalmente, me mantendría alejado de los submódulos de Git hasta que todos los problemas se hayan solucionado. – user2268788
Quizás este comando puede ser útil:
git archive --remote=MyRemoteGitRepo --format=tar BranchName_or_commit path/to/your/dir/or/file > files.tar
"Et voilà"
Esto descarga un directorio específico de archivos para fines de archivo, esto no extrae una copia que pueda modificar y rechazar. – leetNightshade
En un directorio vacío:
git init
git remote add [REMOTE_NAME] [GIT_URL]
git fetch REMOTE_NAME
git checkout REMOTE_NAME/BRANCH -- path/to/directory
Esto funcionó para mí cuando la respuesta aceptada no. –
Esta es la respuesta correcta para el OP. –
esto funciona si solo quieres usar la versión remota de un archivo para reemplazar el archivo local, creo que – John
Después de mucho buscar una respuesta, al no encontrar, renunciar, intentarlo de nuevo y así sucesivamente, finalmente encontró una solución a esto en otro hilo SO:
How to git-pull all but one folder
copiar y pegar lo que hay:
git init
git remote add -f origin <url>
git config core.sparsecheckout true
echo <dir1>/ >> .git/info/sparse-checkout
echo <dir2>/ >> .git/info/sparse-checkout
echo <dir3>/ >> .git/info/sparse-checkout
git pull origin master
Para hacer lo que OP quiere (trabajar en un solo directorio), simplemente agregue ese directorio a .git/info/sparse-checkout
, siguiendo los pasos anteriores.
Muchas gracias a @cforbish!
lo estoy publicando aquí principalmente porque cada vez que intento googlear cómo hacerlo, este es un resultado superior, y ese hilo es ni siquiera cerca de ser exhibido. :(Me siento mal al copiar y pegar, pero creo que son las mejores prácticas de SO? – msb
- 1. ¿Cómo extraer un archivo específico con GIT?
- 2. ¿Cómo extraer marcos usando mencoder en un directorio específico?
- 3. Git eliminar el directorio
- 4. git difftool para comparar el directorio?
- 5. ¿Cómo cambio el nombre del directorio .git?
- 6. R XML de programación: extraer nodo específico
- 7. Capistrano carga el directorio .git
- 8. Git: recuperar compromiso específico
- 9. jQuery extraer imágenes del directorio
- 10. ¿Cómo señalar cmake en el directorio específico de la biblioteca?
- 11. Cómo ejecuto un comando desde un directorio específico sin cambiar realmente a ese directorio
- 12. En Jenkins, cómo completar un proyecto en un directorio específico (usando GIT)
- 13. ¿Cómo extraer un subdirectorio git y crear un submódulo?
- 14. ¿Cómo cargo un commit de git específico?
- 15. git commit directorio
- 16. Buscar la revisión de Git de un directorio de trabajo que falta el directorio .git
- 17. ¿Cómo extraer un subconjunto de la historia de Git?
- 18. git clonar en el directorio de inicio
- 19. Empuje el Proyecto Git al Directorio Local
- 20. Extraer solo un directorio de tar
- 21. Instalar msi con msiexec en un directorio específico
- 22. Git pull y especificar el directorio?
- 23. Cómo git commit un único archivo/directorio
- 24. ¿Cómo git diff en un determinado directorio?
- 25. comprobando si el archivo existe en un directorio específico
- 26. Verificar el tamaño total del archivo de un directorio específico para un usuario específico
- 27. Cómo extraer una eliminación de rama en git?
- 28. ¿Cómo se actualiza el directorio de trabajo en "git checkout"?
- 29. Permisos por directorio en git
- 30. ¿cómo puedo señalar PHP glob a un directorio específico?
checkout disperso puede interesarle (aunque aún necesita recuperar todo): vea http://stackoverflow.com/questions/2416815/how-to-git-pull-all-but-one-folder/2416991# 2416991 – VonC