Pourquoi je reçois le message “erreur: impossible de pousser des arbitres”?
J'ai un dépôt git distant et local que je travaille avec. Chaque fois que je fais toutes les modifications en local, je les pousse à la télécommande. Ensuite, j'ai parfois faire un "git commit" sur la télécommande enregistrer les modifications sur les fichiers distants.
Je ne modifiez pas le dépôt distant directement à tous. Je viens de valider les modifications. Et je suis un développeur, personne ne travaille, qu'repos.
Pourquoi j'obtiens une erreur que, d'après ce que je sais, signifie que je dois tirer le premier ?
Je ne veux pas tirer parce que la distance repos fichiers sont dépassées et il va perdre mes changements locaux. C'est vraiment ennuyeux, pourquoi est-ce arrivé ? Et comment puis-je réparer sans avoir à tirer ou recréer le référentiel ? (comme vous pouvez le voir, c'est comme une sorte de subversion type de contrôle de version style ici)
EDIT - L'erreur :
To ssh://...
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://...'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
eh bien, j'étais un peu méfiant à propos de cette partie, c'est pourquoi je le mentionne. Le repos est créé avec "git init'. Je fais un commit sur le dépôt distant, parce que je ne vois pas de changements dans ce référentiel autrement. Je suis en ajoutant le code pour afficher l'erreur
OriginalL'auteur Spyros | 2011-04-14
Vous devez vous connecter pour publier un commentaire.
Ce que vous devriez faire est de créer le référentiel distant comme un dépôt nu. Un dépôt nu est juste le repo git, sans un courant de caisse (qui est, elle, c'est comme le contenu de la
.git
dir dans un repo Git, de sorte qu'il contient des objets et des refs, mais il ne dispose pas d'un index ou d'une copie de travail de la hiérarchie des fichiers). Si vous essayez de pousser à un non-dépôt nu, la copie de travail permettra de sortir de la synchronisation avec ce qui est engagée, et provoquer les types de problèmes que vous voyez ici.Vous pouvez créer un dépôt nu à l'aide de
git init --bare repo.git
. Ou vous pouvez cloner un dépôt existant comme un nu-repo à l'aide degit clone --bare original-repo new-repo.git
.Si vous voulez avoir une copie extraite du dépôt sur votre serveur, vous devrez créer une nouvelle, non nu repo sur le serveur, puis tirez-le dans le repo de la nue-pensions que vous pousser à.
+1, vous devriez pousser à nu le dépôt git.
Fondamentalement. Un dépôt nu magasins de l'histoire, les branches et les tags, mais qui n'ont pas toute sorte de copie de travail d'une version en particulier, la façon normale de mise en pension n'. Vous pouvez cloner un nu-pensions pour créer une normal repo qui a une copie de travail, que vous vous fassiez votre travail.
Merci pour la clarification, qui sauve la journée pour vous 🙂
OriginalL'auteur Brian Campbell
toujours, cela signifie que vous n'avez pas de synchroniser le dépôt distant avec local repo,d'abord, vous devez synchroniser en utilisant la commande git pull comme suit:
après ce processus ,vous permettra de synchroniser entre eux ,et puis vous pouvez envoyer les modifications à distance repo par ce qui suit:
OriginalL'auteur yuyonghang
Ici est une autre option.
OriginalL'auteur marquescharlon
J'ai fait face à ce genre de problème, et la commande suivante travaillé.
git push --set-en amont de l'origine de maître
OriginalL'auteur Satish