Je suis assez nouveau pour git
et l'utilise actuellement pour gérer notre code dans un environnement d'équipe. J'ai eu quelques problèmes de rebasement et je les ai corrigés en utilisant
git checkout --ours filename.txt
git add filename.txt
git rebase --continue
Maintenant, je souhaite pousser mes modifications, et donc exécuter la commande suivante
$ git Push Origin feature/my_feature_branch
me donne l'erreur suivante:
To ssh://[email protected]:7999/repo/myproject.git
! [rejected] feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to Push some refs to 'ssh://[email protected]:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git Push --help' for details.
Que puis-je faire pour me débarrasser de l'erreur?
P.S. : J'évite d'utiliser l'option --force
autant que possible.
Il semble que quelqu'un ait envoyé de nouveaux commits entre votre dernier git fetch
et votre dernier git Push
. Dans ce cas, vous devez répéter vos étapes et rediffuser my_feature_branch
une fois de plus.
git fetch
git rebase feature/my_feature_branch
git Push Origin feature/my_feature_branch
Après le git fetch
, je vous recommande d’examiner la situation avec gitk --all
.
Vous n'avez probablement pas récupéré les modifications à distance avant la modification de la base ou quelqu'un a introduit de nouvelles modifications (lors de la modification de la base et de la tentative de transmission). Essayez ces étapes:
#fetching remote 'feature/my_feature_branch' branch to the 'tmp' local branch
git fetch Origin feature/my_feature_branch:tmp
#rebasing on local 'tmp' branch
git rebase tmp
#pushing local changes to the remote
git Push Origin HEAD:feature/my_feature_branch
#removing temporary created 'tmp' branch
git branch -D tmp
J'ai eu ce problème! J'ai essayé: git fetch + git merge, mais ça n'a pas été résolu! J'ai essayé: git pull, et aussi je n'ai pas résolu
Alors j'ai essayé ceci et résolu mon problème (est similaire de la réponse d'ingénieur):
git fetch Origin master:tmp
git rebase tmp
git Push Origin HEAD:master
git branch -D tmp
Je suis en retard à la fête mais j’ai trouvé des instructions utiles dans la page d’aide de github et j’ai voulu les partager ici.
Parfois, Git ne peut pas modifier votre référentiel distant sans perdre des validations. Lorsque cela se produit, votre push est refusé.
Si une autre personne a appuyé sur la même branche que vous, Git ne pourra pas appliquer vos modifications:
$ git Push Origin master
To https://github.com/USERNAME/REPOSITORY.git
! [rejected] master -> master (non-fast-forward)
error: failed to Push some refs to 'https://github.com/USERNAME/REPOSITORY.git'
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.
Vous pouvez résoudre ce problème en récupérant et en fusionnant les modifications apportées sur la branche distante aux modifications apportées localement:
$ git fetch Origin
# Fetches updates made to an online repository
$ git merge Origin YOUR_BRANCH_NAME
# Merges updates made online with your local work
Ou, vous pouvez simplement utiliser git pull
pour exécuter les deux commandes à la fois:
$ git pull Origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work
J'ai eu un problème similaire et je l'ai résolu avec: Git pull Origin
J'ai eu ce problème et aucun des conseils ci-dessus ne m'a aidé. J'ai pu tout aller chercher correctement. Mais Push a toujours échoué. Il s’agissait d’un référentiel local situé dans un répertoire Windows et de plusieurs clients l’utilisant via le pilote de dossier partagé VMWare. Il est apparu que l'un des systèmes verrouillé le référentiel Git pour l'écriture. Après avoir arrêté le système VMWare concerné, ce qui a causé le verrouillage, tout a été réparé immédiatement. Il était presque impossible de savoir quel système était à l'origine de l'erreur. Je devais donc les arrêter un par un jusqu'à ce que je réussisse.
Eh bien, j’ai utilisé le conseil ici et il m’a vaincu car il fusionnait directement mon code local pour le maîtriser. .... alors prenez le tout avec un grain de sel. Mon collègue a dit que ce qui suit a aidé à résoudre le problème, il était nécessaire de réorganiser ma succursale.
git branch --set-upstream-to=Origin/feature/my-current-branch feature/my-current-branch
Dans Eclipse, procédez comme suit:
Dépôts GIT> Télécommandes> Origine> Faites un clic droit et dites chercher
Référentiels GIT> Suivi à distance> Sélectionnez votre branche et dites fusion
Allez au projet, faites un clic droit sur votre fichier et dites Fetch from upstream.