¿Cómo puedo enviar archivos con git?

84

¡Ninguno de los tutoriales ayudará!
Todos hacen esa cosa en la que simplemente asumen que sé qué hacer ...

Actualmente, mi ventana de terminal comienza con ..

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    httpdocs/newsite/manifest/cache/0a432970ba6491fe65dad60b012e5c95_louloumay2011en-1-4dea3186b7f7b.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0a61b5d7a9e97da78fe602e1ad41edb6_5-4dec7c3d57c80.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0afb6a7716a85d0de46cdd03bb30f75f_fifa_panorama_full_page-01_thu-4dea3d1a0e0f5.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b3bc9be76a5d3e1e36af4b8dcf98658_free2-4df0e2e08761f.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b6342913b8e599fac76da452af98ec5_si-feb-2009-1-4dea3d1abcb61.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b9ddc587340f7744e03c4b2dafacf7f_lou-lou-winter-2009-cover-4dea3d1a9b1a0.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf64ff8fc22720b3da20d0730fa6a04_chatelaine-dec-2009-4dea3d18daa30.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf664e03eb0a2255b69b02aed85add0_summumfeb2011-2-4dea3188766aa.jpg

pero no hay forma de saber cómo hacer lo que dicen hacer aquí ..
http://learn.github.com/p/normal.html

Todo lo que dice es

Simplemente escribimos nuestro mensaje de confirmación y salimos del editor.

¡¿Qué significa eso?!
El hecho de que escriba la palabra simplemente no significa que sea simple ...

Cuando empiezo a escribir, hace cosas raras, dice "grabando" o "insertando" y hay alrededor de 300 archivos, ¿y quiere que reemplace cada línea con un mensaje?!?

Ayuda !

Usaría su práctica aplicación Mac para esto, pero si tiene más de 20 archivos, ¡se congela!
¿¿Que pasa con eso??

Kirk Strobeck
fuente
10
Eso no tiene nada que ver con mi pregunta. Si digo "cómo esquiar cuesta abajo", entonces le dices a una persona cómo esquiar, no dices "bueno, ¿por qué estás en una montaña?"
Kirk Strobeck
2
Una confirmación sin un argumento -m lanza un editor de texto donde puede hacer sus comentarios. (Probablemente el valor predeterminado es vim en este caso). El autor del tutorial asume que ya sabe cómo usarlo.
Alex Howansky
@alex gracias por explicar
Kirk Strobeck
Alguien más familiarizado con OSX que yo probablemente pueda decirle cómo configurar su editor predeterminado en algo diferente. Por lo general, es "exportar EDITOR = / ruta / a / lo que sea" en la configuración de inicio de su shell.
Alex Howansky
6
-1 para el RT [F] M. El editor predeterminado parece ser el problema, no la falta de lectura de la documentación de git.
Philip Oakley

Respuestas:

92

Cuando se ejecuta git commitsin argumentos, se abrirá su editor predeterminado para permitirle escribir un mensaje de confirmación. Guardar el archivo y salir del editor hará la confirmación.

Parece que su editor predeterminado es Vi o Vim. La razón por la que suceden "cosas raras" cuando escribes es que Vi no se inicia en el modo de inserción, i¡primero debes presionar en tu teclado! Si no lo desea, puede cambiarlo por algo más simple, por ejemplo:

git config --global core.editor nano

Luego, cargará el editor Nano (¡asumiendo que está instalado!) Cuando confirme, que es mucho más intuitivo para los usuarios que no han usado un editor modal como Vi.

Ese texto que ves en tu pantalla es solo para recordarte lo que estás a punto de cometer. Las líneas están precedidas por lo #que significa que son comentarios, es decir, Git ignora esas líneas cuando guarda su mensaje de confirmación. No es necesario que escriba un mensaje por archivo, solo ingrese un texto en la parte superior del búfer del editor.

Para omitir el editor, puede proporcionar un mensaje de confirmación como argumento, por ejemplo

git commit -m "Added foo to the bar"
Ben James
fuente
Cuando dices "ignorar", ¿significa que se mantendrá en escena?
Kirk Strobeck
3
No, esas líneas no afectan lo que se va a cometer. Esos archivos aún se confirmarán incluso si elimina las líneas de comentarios. Son solo un recordatorio del estado de su repositorio cuando ejecutó el git commitcomando.
Ben James
Entonces, si ejecuto la confirmación, el cambio se registrará, incluso si hay un #en esa línea.
Kirk Strobeck
2
Eso es correcto. Lo que se compromete es lo que se ha git addañadido al índice.
Ben James
Otra opción es en lugar de git commit, puede ejecutar git commit -a -m "Your message for the commit"Entonces no se ejecutará ningún editor.
27

Parece que el único problema aquí es que el editor predeterminado que se inicia es vio vim, con el que no está familiarizado. (Como consejo rápido, para salir de ese editor sin guardar los cambios, golpeó Escun par de veces y luego escriba :, q, !y Enter.)

Hay varias formas de configurar su editor predeterminado y no ha indicado qué sistema operativo está utilizando, por lo que es difícil recomendar uno en particular. Sugeriría usar:

 git config --global core.editor "name-of-your-editor"

... que establece una preferencia global de git para un editor en particular. Alternativamente, puede establecer la $EDITORvariable de entorno.

Mark Longair
fuente
Su vimhoja de trucos es valiosa, especialmente para aquellos que provienen de esa comunidad "un ícono vale más que mil líneas de comando ;-)"
Philip Oakley
Encontré que viemu.com/a-why-vi-vim.html es particularmente útil para explicar por qué vi / vim todavía está aquí. Luego, migre a la hoja de referencia
Philip Oakley
24

en el editor estándar Vi en esta situación, debe

  1. presione Esc
  2. escriba ": wq" (sin comillas)
  3. Presione Entrar
Oner Ksor
fuente
16

El comando para confirmar todos los archivos modificados:

git commit -a -m 'My commit comments'

-a = todos los archivos editados

-m = la siguiente cadena es un comentario.

Esto se confirmará con el repositorio de unidades / carpetas locales. Si desea enviar sus cambios a un servidor git / servidor alojado de forma remota, después del comando anterior, escriba:

git push

La hoja de trucos de GitHub es bastante útil.

Ali
fuente
13

No conozco el entorno de su sistema, pero parece que ha escrito:

git commit

Y se ha iniciado su editor predeterminado. En el peor de los casos (para ti) podría haber sido vim :)

Si no sabe cómo salir de vim, use: q.

Si tiene más problemas, puede utilizar

git commit -m 'Type your commit message here'
pkk
fuente
¿Hay alguna forma de elegir un editor diferente con el que se abrirá? ¿Como nano?
Kirk Strobeck
1
Seguro: esto debería cambiar el editor predeterminado a nano: git config --global core.editor nano
pkk
mensaje entre comillas dobles .. "Mensaje"
Prabs
2

Git usa "el índice" para preparar las confirmaciones. Puede agregar y eliminar cambios del índice antes de confirmar (en su pegado ya ha eliminado ~ 10 archivos con git rm). Cuando el índice parezca que lo desea, ejecute git commit.

Por lo general, esto se activará vim. Para insertar texto i, <esc>vuelve al modo normal, pulsa ZZpara guardar y salir ( ZQpara salir sin guardar). voilà, ahí está tu compromiso

Knittl
fuente
2

Esto sucede cuando no incluye un mensaje cuando intenta comprometerse usando:

git commit

Lanza un entorno de editor. Salga escribiendo :q!y presionando enter.

Te llevará de regreso a la terminal sin comprometerte, así que asegúrate de intentarlo de nuevo, esta vez pasa un mensaje:

git commit -m 'Initial commit'
Juliarm
fuente
1
En realidad, esto me ayudó más que la respuesta aceptada al explicar el contexto, lo que está sucediendo y cómo hacer que las "cosas raras" vuelvan a ser normales.
timmackay
1

Parece que todas las ediciones ya forman parte del índice. Entonces, para confirmar solo usa el commitcomando

git commit -m "My Commit Message"

Al mirar sus mensajes, mi instinto me dice que probablemente no desee que los cachearchivos se incluyan en su depósito. Especialmente si es algo que se construye sobre la marcha al ejecutar su programa. Si es así, debe agregar la siguiente línea a su archivo .gitignore

httpdocs/newsite/manifest/cache/*
JaredPar
fuente
era un subproyecto, se está eliminando todo el directorio.
Kirk Strobeck
Para ver lo que todos los comandos de Git tiene escribir git --helpesto le dará todas las órdenes como commit, push, pull, cloneetc. Para obtener ayuda sobre un comando específico y lo que los interruptores son tipo git commit --help, git push --helpesto debería funcionar en la línea de comandos de Linux y Mac. Si desea una buena aplicación de línea de comandos, recomendaría la misma que github git-scmenlaza en esta página. help.github.com/mac-set-up-git
Ali
1

Enfrenté el mismo problema, lo resolví escribiendo y :q!luego presioné Enter Y resolvió mi problema Después de eso, ejecute el siguiente comando git commit -a -m "your comment here"

Esto debería resolver su problema.

kelvin nyadzayo
fuente
1
Esa respuesta ya se da aquí ( stackoverflow.com/a/7080907/2827823 ) ... dos veces en realidad, por lo que no necesitamos una más.
Ason