Git - ¿No agregará archivos?

80

Tengo problemas en los que no puedo agregar archivos a mi repositorio.

Estoy usando GIT en Windows, en Aptana Studio para algún desarrollo de Ruby.

Me las arreglé para enviar algunos archivos a GitHub, pero luego de esto, todo dejó de funcionar. Tengo, por ejemplo, una nueva subcarpeta en mi directorio maestro, con 2 archivos ruby ​​dentro. Si llamo "git add.", Y luego "git status" y sigue diciendo "directorio de trabajo limpio" y no tiene nada que confirmar.

He intentado "git add folder / myfile.rb" y todavía nada.

¿Alguien tiene alguna idea de lo que puedo probar?

Martín Blore
fuente
2
No es broma, pero intente reiniciar la máquina
manojlds
Fue un error tonto de mi parte, estoy usando tortoise git y hay una casilla de verificación cuando realizas cualquier cambio, estaba desmarcada de mi lado y tengo algunos archivos nuevos solo localmente, ¡así que ten cuidado con eso!
BotanMan
1
Estaba dentro de un subdirectorio del proyecto smh
Jacksonkr
@Jacksonkr, esta solución ya fue informada por la respuesta de gaoagong a continuación.
questionto42

Respuestas:

145

Me encontré en una situación similar a la del cartel:

Si llamo "git add.", Y luego "git status" y sigue diciendo "directorio de trabajo limpio" y no tiene nada que confirmar.

Pero tenía una solución diferente a la de aquí. Desde que llegué a esto primero, espero ahorrarles algo de tiempo a otros.

De las respuestas anteriores y lo que he visto en otros lugares, las soluciones habituales a este problema son:

  • Asegúrese de que realmente haya cambios guardados en el archivo en cuestión
  • Asegúrese de que el archivo no cumpla con sus reglas de exclusión en .gitignorey.git/info/exclude
  • Asegúrese de no intentar agregar una carpeta vacía. Git no los rastreará. La solución estándar es colocar un archivo en blanco con el nombre de .gitkeepmarcador de posición para que git rastree la carpeta.

En mi caso, originalmente intenté crear un repositorio de git alrededor de un repositorio existente (sin saber que estaba allí). Había eliminado la .gitcarpeta de este sub-repositorio hace un tiempo, pero no me di cuenta de que era demasiado tarde y que git ya lo estaba rastreando como un submódulo . Puede leer más sobre cómo se comportan y cómo eliminarlos aquí , pero

  • la solución para mí fue simplemente correr git rm --cached path_to_submodule.
zrisher
fuente
29
¡Salvador de la vida! Simplemente tuve que escribir git rm --cached name_of_former_submoduley obtuvo la ruta automáticamente.
leymannx
8
qué es el submódulo
Muhammad Umer
¿cómo sé si ese es mi problema? No sé cómo reconocer eso
PlayHardGoPro
1
@MuhammadUmer La página del submódulo del archivo Léame oficial de Git explica qué son con más detalle.
zrisher
30

Para agregar a las posibles soluciones para otros usuarios:

Asegúrese de no haber cambiado las mayúsculas y minúsculas del nombre de la carpeta en Windows:

Tuve un problema similar en una carpeta llamada Setupcontrolada por Git y alojada en GitHub, todo el desarrollo se realizó en una máquina con Windows.

En algún momento cambié la carpeta a setup(minúscula S). A partir de ese momento, cuando agregué nuevos archivos a la carpeta de configuración, se almacenaron en la setupcarpeta y no en la Setupcarpeta, pero supongo que debido a que estaba desarrollando en una máquina Windows, la Setupcarpeta existente en git / github no se cambió setup.

El resultado fue que no pude ver todos los archivos setupen GitHub. Sospecho que si cloné el proyecto en una máquina * nix, habría visto dos carpetas Setupy setup.

Así que asegúrese de no haber cambiado el caso de la carpeta contenedora en una máquina con Windows, si lo ha hecho, le sugiero:

  • Cambiar el nombre de la carpeta a algo como setup-temp
  • git add -A
  • git commit -m "Whatever"
  • Cambie el nombre de la carpeta a lo que desee
  • git add -A
  • git commit -m "Whatever"
antfx
fuente
7
Esto también me pasó con un nombre de archivo. El uso de git mv -f newFileCase oldFileCase corregirá el repositorio
Brian DiCasa
Tuve un problema de caso en osx, desafortunadamente, aunque es un sistema de archivos * nux, generalmente se configura como insensible a mayúsculas y minúsculas, lo que puede causar problemas con herramientas * nux como git.
Pellet
Gracias, me salvaste el día
Zhenya
si tiene cambios pendientes en archivos con "mismo nombre" pero con un caso diferente, esto también podría causar el mismo problema
Mauricio Gracia Gutierrez
¿Cómo se puede averiguar el oldFileCase que espera git?
diemo
24

Si el archivo está excluido por .gitignorey desea agregarlo de todos modos, puede forzarlo con:

git add -f path/to/file.ext
mobiusloopy
fuente
¡Muchas gracias! Esto realmente me ayudó. Por alguna razón, mi archivo fue excluido (¡no estaba en, .gitignoreasí que no estoy seguro de por qué!), ¡Y esto solucionó mi problema!
benmaq
13

Extraño, pero luché con git toda la noche para agregar un archivo. Resulta que ya se agregó. Git no estaba recogiendo mis cambios, ya que los cambios no se estaban guardando, ya que mi cuenta no podía acceder al archivo y mi IDE no informaba esto a través de SSH.

En resumen, verifique que no lo haya agregado al repositorio.

Puntilla
fuente
1
... pensando en esto, gitpodría agregar un mensaje si alguna de las rutas dadas ya está completamente en el repositorio ... habría ahorrado al menos 13 personas unos minutos.
jjmontes
13

Verifique su .gitignorearchivo para asegurarse de que Git pueda verlo. Asimismo, hay un archivo .git/info/excludeque 'excluye' archivos / directorios del proyecto, tal como lo .gitignoreharía un archivo.

gorrión
fuente
También agregaría para verificar que los archivos no estén de alguna manera "ya agregados" o no ...
rogerdpack
9

Acabo de tener este problema y el problema era que estaba dentro de un directorio y no en el nivel superior. Una vez que me mudé al nivel superior, funcionó.

gaoagong
fuente
2
Estoy seguro de que podría haber usado git add ..o lo que sea necesario para llegar al nivel en el que existían mis cambios y también habría funcionado. Esto es solo un problema de gotcha aquí (mi error de usuario).
gaoagong
8

Lo mejor es copiar su carpeta. Elimina el original. Clone el proyecto desde github, copie sus nuevos archivos en la nueva carpeta clonada y vuelva a intentarlo.

Chris G.
fuente
Esto funcionó para mí usando git en CygWin y obteniendo algunos mensajes de "permisos fuera de servicio". Ni siquiera necesité clonar y copiar los archivos modificados, simplemente dupliqué el directorio tal como estaba. Creo que obligar a Windows a reescribir todo significa que corrige los problemas de permisos.
RoG
5

Tuve este problema con el primer programa de la carpeta. Hice "git add" y luego "git commit". "git status" dio el error descrito, es decir, "nada que confirmar, directorio de trabajo limpio"

Terminé eliminando el archivo .git de la carpeta del programa. Luego hice un nuevo git init, git add y git commit y funcionó.

codelearner336
fuente
Para mí fue al revés. Estaba en un conflicto de fusión (rebase) y tuve que ir cda la carpeta git adddel archivo.
LosManos
3

¿Qué tal el procedimiento estándar?

git add folder
git commit

Esto agregará la carpeta y todos sus archivos con un solo comando.
Tenga en cuenta que git no puede almacenar carpetas vacías.

Si la confirmación no funcionó, probablemente el primer lugar que debe verificar es .gitignore.

Andrejs Cainikovs
fuente
6
Tenga en cuenta que git no puede almacenar carpetas vacías. TY!
Blundell
3

Aquí puede encontrar una respuesta al mismo problema:

Básicamente, en este caso, el problema fue que global_git ignore

Max_Power89
fuente
2

En mi caso, el problema fue la opción SafeCrLf habilitada. Estoy en windows con tortuga git. Después de deshabilitar la opción, agregar los archivos ya no era un problema.

kode
fuente
2

Otro problema pueden ser los permisos de archivos. Intente emitir: chmod 755 file1

MAQ
fuente
2

Solución tonta de mi parte, pero pensé que no estaba agregando y presionando nuevos archivos porque github.com no mostraba los archivos que acababa de presionar. Había olvidado que los archivos que agregué estaban en una rama diferente. Los archivos se habían empujado bien. Tuve que cambiar de mi rama maestra a la nueva rama en github para verlos. Perdí unos minutos en ese :)

David Peterson
fuente
1

Es imposible (para mí) agregar el primer archivo a un repositorio vacío clonado desde GitHub . Debe seguir el enlace README, que GitHub sugiere crear. Después de crear su primer archivo en línea , puede trabajar normalmente con git.

Esto me pasó el 17 de noviembre de 2016.

Jarekczek
fuente
1

Todavía soy un principiante en git, y fue solo un error estúpido que cometí, una larga historia en una oración. No estaba en una subcarpeta como informó @gaoagong, sino al revés, en una carpeta principal. Por extraño que parezca, no obtuve la idea de esa respuesta, en cambio, la idea surgió cuando probé git add --all, vea la larga historia a continuación.

Ejemplo en detalles. Repo real:

ingrese la descripción de la imagen aquí

La carpeta principal que había abierto por error en el nivel principal (vscode_git en mi caso):

ingrese la descripción de la imagen aquí

Había clonado un repositorio, pero tenía una carpeta principal por encima de este repositorio que había abierto en su lugar, y luego intenté agregar un archivo del repositorio de la subcarpeta con git add 'd:\Stack Overflow\vscode_git\vscode-java\.github\ISSUE_TEMPLATE.md', que simplemente no hizo nada, sin mensaje de advertencia, y git statusluego dijo:

no se agregó nada para confirmar, pero los archivos sin seguimiento están presentes (use "git add" para realizar el seguimiento)

ingrese la descripción de la imagen aquí

Correr git add --allme dio las notas amarillas:

advertencia: agregando repositorio git integrado: vscode-java el repositorio integrado y no sabrá cómo obtenerlo.

pista: si deseaba agregar un submódulo, use: git submodule agregar vscode-java

pista: si agregó esta ruta por error, puede eliminarla del índice con git rm --cached vscode-java

Consulte "submódulo de ayuda de git" para obtener más información.

ingrese la descripción de la imagen aquí

Para solucionar esto, revirtí el git add --allcon git rm --cached -r -f -- "d:\Stack Overflow\vscode_git\vscode-java" rm 'vscode-java':

ingrese la descripción de la imagen aquí

Luego, simplemente abriendo la carpeta de repositorio real en su lugar,

ingrese la descripción de la imagen aquí

el git volvió a funcionar como se esperaba. Por supuesto, la carpeta ".git" de la carpeta principal podría eliminarse entonces:

ingrese la descripción de la imagen aquí

questionto42
fuente
1

Puede eliminar de forma recursiva el repositorio inicializado de git $cd repo added $git rm -rf git

Puede crear una rama separada y vincular los submódulos a la rama maestra La documentación sobre los submódulos es realmente útil Documentación [https://git-scm.com/book/en/v2/Git-Tools-Submodules]

También vea algunas soluciones en [/programming/36236484/maintaining-a-git-repo-inside-another-git-repo]

Sumi
fuente
0

Busqué por un tiempo y terminé descubriendo que había bloqueado el puerto SSH, que fue lo que causó que el comando git add dejara de funcionar. Terminé cambiando el origen usando https con el siguiente comando: git remote set-url origin [url-to-git-repo]

adorno 9
fuente
0

Sé que esta es una pregunta muy antigua, pero sé que también le puede pasar a alguien, resulta que estaba trabajando con un archivo llamado AUX.JS y este es un nombre de archivo reservado para Windows, esto produjo el siguiente error

fatal: incapaz de stat 'src / hoc / Aux.js': no ​​existe tal archivo o directorio

para que pueda eliminar el archivo o cambiarle el nombre, entonces funcionará.

Conclusión final, además de todas las demás respuestas válidas, si está en una máquina con Windows, busque el resultado del comando 'git add', que también puede proporcionar información adicional.

Wiston Coronell
fuente
Eso también me está sucediendo en Windows, usé git bash en ese sistema operativo para crear el archivo Aux.js normalmente
Alex
0

Tuve el mismo problema con un repositorio que cloné de SiteGround Git a mi mac. El repositorio recién clonado tenía una lista de archivos modificados que git statusdecían que debían agregarse a la confirmación, pero intentar agregar o retirar alguno de ellos no hizo nada en absoluto.

Por alguna razón, hubo cambios de casos en los nombres de los archivos (por ejemplo, .jpg -> .JPG). La solución fue simplemente git mvel nombre de archivo que el sistema operativo estaba usando con el nombre que estaba usando git, por ejemplo:

git mv File_That_Wont_Add.txt File_THAT_WONT_Add.txt
Douglas Krugman
fuente
0

Recientemente experimenté este problema en mi computadora con Windows 7. Estoy usando la interfaz de la ventana de comandos git. La solución fue tener mucho cuidado con la distinción entre mayúsculas y minúsculas de los nombres de archivos y directorios al hacer el git add. Aunque git no se quejaba cuando el caso no coincidía exactamente con el caso de los nombres de directorio y archivo del sistema de archivos de Windows, tampoco agregaba los archivos. No habría nada que comprometer. Una vez que escribí los nombres de los archivos con el caso exactamente correcto, se agregarían y se enumerarían debajo de los cambios que se confirmarán como pretendía.

jsim
fuente
0

Tenía este problema en Visual Studio, lo que funcionó para mí fue: 1- Haga clic derecho en el archivo agregado que no está siendo reconocido por git. 2- Seleccione "Agregar archivo excluido al control de fuente"

AlexGH
fuente
0

Tuve el mismo problema y fue porque había un programa que usaba algún archivo y git arroja un error en este caso, Visual Studio había bloqueado ese archivo.

Mejía Pérez Néstor
fuente
0

Tuve un problema por el cual los archivos de una carpeta no se agregarían al control de fuente de Github. Para resolver eso, eliminé la carpeta .git que se creó en esa carpeta.

Vaibhav Ghorpade
fuente
0

Tuve un problema similar.

El problema fue que, en Windows, en el índice, el archivo se agregó en un caso diferente al que estaba en el área sin etapas. Por ejemplo, en el índice, el archivo era nombre xx.txty en el área sin etapas, el archivo era nombres Xx.txt.

Se eliminó el archivo con el caso incorrecto del índice ( xx.txt). Luego, he podido agregar el archivo con el caso correcto ( Xx.txt).

ghigad
fuente
0

El problema git no agregaría un archivo modificado. Usando git bash, había cambiado la carpeta delimitando el nombre de la carpeta con comillas dobles. Muestra el contenido de la carpeta correctamente, pero git no agrega archivos modificados.

Solución Utilicé la comilla simple para delimitar el nombre de la carpeta.

por ejemplo, CD "Nombre de carpeta", estado de git, nada para confirmar, CD limpio de árbol de trabajo .. ls 'Nombre de carpeta' CD 'Nombre de carpeta' estado de git modificado: ModifiedFileName.bat

Devlin
fuente
0

Probé todo lo anterior pero nada funcionaba. Más tarde, ejecuté mi símbolo del sistema como administrador y volví a intentar todas las etapas, es decir, puesta en escena-> compromiso-> adición remota -> empujando. Funcionó como una magia. Los cambios se reflejaron en el repositorio remoto deseado.

Espero que ayude :) Mantenga la calma y siga codificando.

PD: Soy una abeja nueva y trato de aprender del error.

rocoso
fuente
0

Lo mismo me sucedió cuando cambié el nombre de un archivo entre Uppercase/Lowercase. Por lo tanto, el cambio de nombre de archivo temporal podría solucionar el problema.

T.Todua
fuente
0

En tales casos, verifique las reglas en el archivo .gitignore global y asegúrese de que su carpeta no se ajuste a ellas.

Priyanka Singh
fuente
0

Así es como hice que el mío funcionara:

Empecé por

git init 

dentro del directorio con todos los archivos / carpetas que quería incluir.

Yo corrí

git add --all
git add .
git commit -m "uploaded fixed sources 3"
git push origin master

LUEGO

Hice otro directorio fuera del origen, me mudé a ese directorio, luego cloné el repositorio de git existente usando el archivo http: //../../.git como se establece en la página en github.

Una vez que clonó la fuente (que no tenía más que un readme.md), copié todos los archivos del directorio antiguo en el nuevo con

cp -rf ../../* .

Luego agregué nuevamente, y luego comprometí y empujé esas ediciones.

git add --all
git add .
git commit -m "uploaded fixed sources 4"
git push origin master

No me preguntes por qué, pero esta vez se subieron al sitio de github y aparecieron como archivos a los que puedes acceder en el tarball .zip.

demonio
fuente