Trouver la source de l'erreur: git push rejeté: erreur: impossible de pousser des refs
Dans l'une des équipes, lorsque l'on travaille avec git, encore et encore, nous nous heurtons à des "git push rejeté: erreur: impossible de pousser des arbitres"
À [email protected]:ledy/thakres.git ! [rejeté]
b_stable -> b_stable (non-avance rapide) erreur: échec pour pousser certains
refs '[email protected]:ledy/thakres.git" Pour vous empêcher de
perdant de l'histoire, non de l'avance rapide des mises à jour ont été rejetées Fusionner les
distance changements (par exemple, 'git pull") avant de pousser à nouveau. Voir la Note
sur avancer rapidement' de 'git push --help" pour plus de détails.
Bien sûr, on peut continuer avec l'option "-f" comme rapide n'dirty - pas vraiment une solution.
Cependant, nous aimerions savoir d'où cela vient et quelle est la raison de ce rejet.
Ne peut pas git donner des détails commentés sur la raison pour laquelle c'est le rejet, peut-être que le fichier qui est à l'origine du conflit?
Nous avons un suspect .gitignore qui a été la cause des problèmes similaires sur un autre projet.
! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '[email protected]'
l'édition et l'ajout de la partie manquante de message. cependant, git ne me dites pas sur la source exacte ou le fichier qui est à l'origine des troubles.
OriginalL'auteur ledy | 2013-11-08
Vous devez vous connecter pour publier un commentaire.
Git ne pas pousser des fichiers individuels à un moment, il repousse complète de commettre des arbres, comme dans, "ici est de savoir comment l'ensemble du projet s'est penché sur un commit, et il ressemblait à un autre, et finalement, ça ressemble à ça".
Dessiné comme un graphique de la commet, c'est, par exemple, la très linéaire:
Ce qui est "rejeté", c'est que le "enfin" vous êtes approvisionnement n'est pas "avancer" dans le "enfin" de la télécommande avait avant, c'est à dire, vous êtes absent de certains "progrès" que quelqu'un d'autre mettre en. Vous avez eu:
et puis vous avez ajouté engage
E
,F
, etG
. Mais pendant que vous faisiez que quelqu'un d'autre ramassé la série de commits se terminant enD
et ajouté sa propre commettreH
:Vous proposons de jeter
H
et de faire de la validation de la séquence de ressembler à votre séquence:D
est suivie parE
-par-G
et c'est la fin de tout.Git vous indique la nom de la branche qui a le progrès vous proposons de jeter, dans ce cas,
master
. C'est à vous degit fetch
le progrès et la conserver, peut-être pargit merge
la création d'une fusion de commettreM
:ou peut-être par "rebasage" de votre série de commits sur le dessus de
H
:(où
E'
,F'
, etG'
sont des versions de "ce qui a changé dansE
,F
, etG
" avec juste assez de modifier à appliquer sur le dessus deH
au lieu—assez souvent, c'est engager la filiation, de temps en temps il y a un peu plus de travail).Comme ci-dessus, vous devez utiliser
git fetch
pick up "leurs" s'engage. Vous devez mettre en place une "distance", que le nom de l'URL et fournit un espace de noms à suivre "leur s'engage". Si votre dépôt a été cloné à partir[email protected]:ledy/thakres.git
à l'origine, il a déjà une distance nomméorigin
que de points là-bas. Puisgit fetch origin
apportera au cours de tout le nécessaire s'engage et mise à jourorigin/master
à dénoter. Utilisationgit log origin/master
ougitk --all
de voir "leurs" s'engage et décider quoi faire. Si c'est justegit merge
, vous pouvez utilisergit pull
; voir les autres, de SORTE postes.Aussi couru hors de l'espace):
git push
pouvez prendre un nom de branche;git push origin master
les limites de la pousser à pousser simplement lamaster
branche à distanceorigin
. (Éventuellement, vous pouvez décider quoi faire àb_stable
trop mais que peut-être plus tard.) C'est probablement ce que vous voulez pour le moment.s'il vous plaît corrigez-moi si je me trompe, mais ce
git fetch
va remplacer mes propres changements, n'est-ce pas?Non, la bonne chose à propos
git fetch
est que (normal configurations) la seule chose qu'il fait est d'ajouter de nouvelles s'engage en vertu de larefs/remotes
d'espace de noms. Cela vous permet de voir ce que les autres font, mais ne touchez pas l'un de vos propres branches, qui sont sous larefs/heads/
d'espace de noms. (La "distance"origin/master
est vraimentrefs/remotes/origin/master
, dans cet autre espace de noms.)OriginalL'auteur torek
Faire un git pull, puis d'essayer de pousser, c'est ce que le message est en train de dire.
-f
il peut être forcé et écrasé, mais ce n'est pas un correctif ou un détail sur la source de l'erreur que je suis à la recherche d'.Oui mais lire @torek la réponse qui explique sur les branches. Peut-être besoin pour passer à la caisse la plus appropriée en premier.
OriginalL'auteur Guillemo Mansilla
Cela peut être difficile de trouver des problème que j'ai eu à plusieurs reprises, lorsque le disque n'est pas de la synchronisation ou la surcharge, haute iowait.
Est
git show-branch --list --all
se soucier ambiguë en direction des noms: "avertissement: refname xyz est ambiguë"?Si oui, essayez de
OriginalL'auteur rabby