Punto muerto entre Git Pull y Git Push

Es un repository compartido de GIT. Mucha gente que trabaja en Same Git Repository.

Es por eso que he intentado primero hacer git pull para get otros cambios, luego add, commit & push .

He intentado a continuación commands en mi local

 $ git pull error: Your local changes to the following files would be overwritten by merge: File Name Please commit your changes or stash them before you can merge. Aborting 

Para cometer

 $ git commit no changes added to commit 

Para empujar

 $ git push To ssh://[email protected]:2222/diffusion/SMM/abc.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'ssh://[email protected]:2222/diffusion/SMM/abc.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (eg hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

¿Cómo resolver este problema?

Tuve el mismo problema recientemente. Es probable que tenga este file ignorado ( .gitignore o .git/info/exclude ) o suponga que no se modificó ( git update-index --assume-unchanged ).

Puede usar git check-ignore -v "File Name" para verificar si el file es ignorado. Si ls "File Name no devuelve ningún error, el file está ahí, pero git lo asume sin modificaciones. Puede usar git update-index --no-assume-unchanged para asumir que se modificó.

Entonces, su problema es que hay files sin seguimiento en su directory de trabajo que también intenta extraer.

Entonces, el file Some File está en su directory de trabajo, pero alguien envió un file con el mismo nombre al server. Cuando tiraba, sobrescribía su file local con la versión del repository remoto: Your local changes to the following files would be overwritten by merge .

Para resolver este problema, puedes hacer dos cosas:

  • Mueva el file, tire, tenga dos versiones alnetworkingedor
  • git add el file, git commit it y git pull para fusionar tus cambios locales con el upstream

Además, lea sobre el área de preparación . Debe agregar los files al área de preparación antes de comprometerse. Esta es la razón por la cual git commit te dice que no hay nada preparado para cometer. git commit solo compromete lo que colocas en el área de preparación.

Debes tomarte un time para entender cómo funciona git (buen recurso [1]). En particular, ser capaz de ver todo el historial de git es crucial, use el siguiente command o las IU de git para eso ( gitk , git-gui ):

git log --oneline --graph --all --decorate

En resumen, probablemente: git pull --rebase funcionará para usted (si no tiene cambios conflictivos).

[1] https://git-scm.com/book/en/v2