2009-11-16 20 views
25

Acabo de comprometer mi árbol de trabajo, agregado al índice primero, con "$ git commit -m 'test'" Guardé el stdout-put de esto en un archivo y veo en la parte superior que dicegit commit problems

# On branch master 
# Changed but not updated: 
# (use "git add/rm ..." to update what will be commited) 
# (use "git checkout -- ..." to discard changes in working directory)" 

el problema es que mi árbol de trabajo no se compromete a la cesión temporal, y tengo la sensación de que esto tiene algo que ver con ello

gracias

+0

qué sistema operativo está utilizando? Específicamente, ¿está usando Git en Windows y, de ser así, bajo qué entorno? –

+0

Ubuntu server, git 1.5.6 – deepblue

+1

Lo primero que podría sugerir es actualizar su versión de Git, la última versión es 1.6.5.3. Estoy bastante seguro de que esos mensajes particulares que citó se han mejorado desde 1.5.x. –

Respuesta

5

Antes de comprometerse un cambio, primero debe agregarlo al índice:

git add myfile 
git commit -m "test" 

Alternativamente, se puede trabajar en un estilo más SVN-like y cometer todo lo que se cambió:

git commit -a -m "test" 

O puede simplemente complemento y cometer un solo archivo:

git commit myfile -m "test" 
+0

hizo todo eso. como mencioné a continuación en un comentario a la respuesta de Jed, moví muchos archivos, así que no creo que commit -a funcione en este caso, ya que los archivos se eliminan y se reintroducen ... y creo que los trata como nuevos archivos luego – deepblue

+0

Solo puedo sugerir que no haya agregado los archivos al repositorio cuando creía que lo hacía; su mensaje es exactamente lo que veo cuando ejecuto 'git commit' sin' git add' primero. –

+0

raro. Hago un 'git add'. cada vez. eso debería hacer el truco.hmmm. gracias por señalar eso aunque – deepblue

0

Realmente tiene que leer la documentación.

git add yourfile 
git commit -m "test" 

O, para cometer todos los archivos modificados -

git commit -a -m "test" 
+0

por supuesto agregué el árbol de trabajo al índice primero ($ git add.), Después de que ejecuté ($ git commit -m 'test'> view_file). Reorganicé bastante mi árbol de trabajo desde el último commit, así que monté muchos archivos eliminados y los reubiqué en lugares nuevos ... por eso estoy guardando el resultado en un archivo para poder revisar lo que git dijo – deepblue

2

¿Hizo un git add . antes de su compromiso?

Siempre es aconsejable hacer un git status antes de git add o git commit para ver lo que ha cambiado y organizado, también.

También es muy útil hacer git diff para ver los cambios específicos que está por cometer.

Esto es lo que git status muestra si ha agregado un archivo y luego lo ha cambiado de nombre.

[email protected]:~$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: foo.txt 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: foo.txt 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# bar.txt 

En este punto se puede simplemente hacer git add . y luego git status will give you more information, perhaps pointing out that you still have a new file and a deleted file called foo.txt . To fix this you need to manually git rm foo.txt before doing git commit`

En el futuro si tiene archivos en un repositorio git que desea muévete debes usar git mv.

+0

yeah 'git status 'es genial. también está informando el mensaje que puse en la pregunta. esos malditos cambios simplemente no se están cometiendo. Pasé todo el día leyendo tutoriales y documentos tratando de encontrar algo para probar. – deepblue

+1

Debe volver a hacer 'git add' si realiza los cambios que desea incluir en la confirmación. Si haces un 'estado de git' luego' git add .' y luego 'git status' de nuevo, deberías ver una diferencia. – mlibby

+0

Y por "hacer cualquier cambio" incluyo cambios en los archivos, cambio de nombre de los archivos, eliminación de archivos, adición de archivos ... cualquier cosa que pueda confundir a git. – mlibby

1

Otra cosa a tener en cuenta, git add agrega el contenido de esos archivos al índice en el momento en que lo ejecuta. Si ejecuta git add y luego cambia los archivos, los nuevos cambios no aparecerán en el índice.

+0

no se realizó ningún trabajo adicional entre las invocaciones 'agregar' y 'confirmar' – deepblue

0

Si mueve archivos y usar git add después, git sólo se añade la nueva copia, pero no elimina la anterior:

$ git status 
# On branch master 
nothing to commit (working directory clean) 
$ mv from to 
$ git add . 
$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: to 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
$ git commit -m "..." 
$ git status 
# On branch master 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

Para eliminar las copias antiguas También debe utilizar git rm:

$ git rm from 
rm 'from' 
$ git commit -m "..." 
$ git status 
# On branch master 
nothing to commit (working directory clean) 

Pero no veo por qué no le permite cometer esos cambios.

28

Respuesta corta:

git push -u origin master

más larga respuesta:

Lo más probable es tratar de empujar compromete a una rama que no fue creada todavía - por ejemplo, en un Github de nueva creación repositorio sin el archivo README creado automáticamente. Al llamar al git push -u origin master, especifica tanto el control remoto al que debe presionar (origen, que generalmente es el valor predeterminado de git) como la bifurcación (principal, también predeterminado en casos típicos). De acuerdo con la documentación git:

-u, -set-aguas arriba Para todo aquel que está al día o empujado con éxito, añadir aguas arriba de referencia (seguimiento), utilizado por Git argumento de menos -pull (1) y otros comandos. Para obtener más información sobre , consulte branch..merge en git-config (1).

Esto significa que después de una exitosa de este comando, a partir de entonces podrás utilizar sólo git push y git pull y por defecto lo origin master (con un poco de exceptions).

0

Chicos, tuve el mismo problema con Git.
Me postulo Cygwin en Windows 8.

  1. cheque si tiene el repositorio que desea comprometerse.
  2. comprobar la ruta

$ git remote -v # así es como se puede ver su camino

$ git remote set-url origin [email protected]:username/repos.git # esta es la forma de configurar remotamente nuevo camino para impulsar los archivos al repositorio derecha. $ git remote -v # para verificar si se configuró la ruta correcta.

  1. $ git add.

4.

$ git push origin master 

espero que esto ayude