Problème lors de l'envoi du nouveau code dans Github


147

J'ai créé un nouveau référentiel sur Github qui ne contient que le fichier Readme.md maintenant.

J'ai un projet RoR nouvellement créé que je voulais pousser vers ce référentiel. Voici les commandes que j'ai données dans mon terminal pour l'exécuter avec l'erreur que j'obtiens.

git remote add origin https://github.com/aniruddhabarapatre/learn-rails.git

Après quoi j'ai entré mon nom d'utilisateur et mon mot de passe

git push -u origin master

Erreur ---

To https://github.com/aniruddhabarapatre/learn-rails.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/aniruddhabarapatre/learn-rails.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

C'est la première fois que je pousse mon code dans un référentiel Github et je suis perdu avec les erreurs. J'ai cherché quelques autres questions qui sont posées ici, mais aucune d'entre elles n'a eu de problèmes la première fois.


Réponses:


167

Lorsque vous avez créé votre référentiel sur GitHub , vous avez créé un README.md , qui est un nouveau commit .

Votre dépôt local ne connaît pas encore ce commit. Par conséquent:

Les mises à jour ont été rejetées car la télécommande contient du travail que vous n'avez pas localement.

Vous voudrez peut-être trouver pour suivre ces conseils:

Vous pouvez d'abord fusionner les modifications distantes (par exemple, « git pull») avant de pousser à nouveau.

C'est:

git pull
# Fix any merge conflicts, if you have a `README.md` locally
git push -u origin master

3
Ce que je fais, c'est d'abord git pull origin master puis pousser à nouveau.
Bagusflyer

12
dans certains cas, vous pourriez obtenir un fatal: refusing to merge unrelated historiesdans un tel cas, vous soumettez git pull --allow-unrelated-histories origin masteret ensuite vous poussez selon la réponse ci
TheLebDev

1
Ça ne marche pas pour moi. remote: Push rejeté. remote: remote: refs / heads / master: ...: nom du committer attendu xxx mais trouvé yyy. Je fais un git config --global user.email yyy et il ne reconnaît toujours pas. Je ne peux rien forcer. !!!
Baruch Atta

284

Si c'est ta première poussée

change juste le

git push **-u** origin master

changez-le comme ça!

git push -f origin master

5
Cela a supprimé mon fichier readme que j'ai mis en place sur github en premier. Maintenant, il me semble que je dois recommencer.
jack blank

3
vous pouvez simplement ajouter un avertissement indiquant que -f force le push et pourrait
perturber la

C'est une mauvaise façon, cela m'a causé un problème, cela a supprimé le readme, qui n'a pas été créé par moi, maintenant je dois appeler le responsable pour lui dire que je suis stupide, désolé créer le read me encore. :(
Mohammad Elsayed le

62

⚡️ FACILE: Tout ce dont vous avez besoin est une poussée forcée. Parce que vous avez peut-être créé un readme.mdfichier sur Github et que vous ne l'avez pas encore extrait.

git push -f origin master

Et voici un GIF.

git push -f origin master

⚠️ ATTENTION : l'utilisation forcepeut changer l'historique pour d'autres personnes sur le même projet. En gros, si vous ne vous souciez pas de la suppression d'un fichier pour tout le monde, allez-y. Surtout si vous êtes le seul développeur du projet.


1
Notez que cette approche modifie l'historique que d'autres utilisateurs de ce référentiel ont déjà récupéré. git push -f origin mastern'est pas une bonne habitude à prendre.
Johnsyweb

1
Cette solution peut résoudre le push commit mais elle supprime également tous les commits passés !.
twenk11k le

2
Méfiez-vous des noobs de Github ... Si vous avez créé un Readme.md via GitHub, cette commande LE SUPPRIMERA en poussant vos nouvelles modifications.
daCoda

C'est surtout pourquoi les gens débarquent ici. -fLa balise supprime les fichiers et doit être utilisée avec précaution.
Ahmad Awais

34

Émettez une poussée forcée avec la commande:

git push -f origin master

10
Notez que cela peut supprimer les commits passés, ce qui peut être souhaitable ou non
Crashalot

8

En supposant que vous ayez ajouté le fichier Readme.md via l'interface fournie par github, le readme n'est pas encore dans votre dossier local. Par conséquent, lorsque vous essayez de pousser vers le référentiel distant, vous obtenez une erreur, car votre référentiel local ne dispose pas du fichier readme - il est "en retard", pour ainsi dire. Par conséquent, comme suggéré dans le message d'erreur, essayez d'abord "git pull". Cela extraira le fichier readme du référentiel distant et le fusionnera avec votre répertoire local. Après cela, vous ne devriez avoir aucun problème à pousser vers le dépôt distant (les commandes que vous avez postées me semblent valides).


6

Cela se produit lorsque vous essayez de pousser initialement.Parce que dans votre dépôt GitHub, vous avez readMe.md ou toute autre chose nouvelle qui ne se trouve pas dans votre dépôt local. Vous devez d'abord fusionner l'historique indépendant de votre dépôt github.

git pull origin master --allow-unrelated-histories

alors vous pouvez obtenir les autres fichiers du repo (readMe.md ou autre) en utilisant ceci

git pull origin master

Après ça

git push -u origin master

Maintenant, vous avez réussi à pousser tous vos changements dans le dépôt Github.Je ne suis pas expert en git, mais à chaque fois, ces étapes fonctionnent pour moi.


5

Considérant que si vous n'avez pas validé vos modifications depuis un certain temps, cela fonctionnera peut-être pour vous.

git add files
git commit -m "Your Commit"
git push -u origin master

Cela a fonctionné pour moi, j'espère que cela fonctionne aussi pour vous.


3

si vous utilisez git pour mac dans l'interface graphique, vous pouvez d'abord choisir Respository-> Pull ou "comm + shift + p" pour "git pull", puis publier la source.


3

Cette erreur se produit lorsque vous transférez les données de votre répertoire local vers votre référentiel git distant en suivant la commande git: git push -u origin master

En tant que répertoire local et les fichiers du répertoire distant git étaient en conflit.

Solution :

Après avoir validé tous les fichiers en préparation, suivez les étapes ci-dessous.

  1. Récupérez les fichiers du référentiel distant en cas de conflit avec le répertoire de travail local.

    • git pull <remoter-url> <branch-name>
  2. Validez à nouveau les modifications.

    • git add -A
    • git commit -m ‘<comment>'
  3. Après avoir validé les fichiers de fusion avec les deux répertoires, vous pouvez utiliser

    • git push -u origin master

Cela résoudra le problème. Merci.


1

J'ai eu un problème similaire ... je l'ai résolu comme ça (je ne suis pas un expert git donc je ne sais pas si c'est une bonne solution, mais cela a fonctionné pour moi):

git pull origin master --allow-unrelated-histories
git merge origin origin/master
git rm README.md
git commit -m 'removed readme.md'
git push origin master

0

J'ai lutté avec cette erreur pendant plus d'une heure! Voici ce qui m'a aidé à le résoudre. Tout cela alors que mon répertoire de travail était le dépôt que j'avais cloné sur mon système.

Si vous ajoutez des fichiers à votre référentiel existant ** 1. J'ai extrait tout ce que j'avais ajouté à mon référentiel dans mon dossier GitHub:

git pull


La sortie était - un fichier readme file1 file2

  1. J'ai copié (glisser-déposer) mes nouveaux fichiers (les fichiers que je voulais pousser) dans mon référentiel cloné (référentiel GitHub). Lorsque vous verrez ce dépôt, vous devriez voir vos anciens et nouveaux fichiers.

par exemple. un fichier readme file1 file2 newfile1 newfile2

  1. git ajouter "newfile1" "newfile2"

  2. [facultatif] git status cela vous assurera si les fichiers que vous souhaitez ajouter sont correctement mis en scène ou pas


Sur le maître de succursale Votre succursale est à jour avec «origine / maître». Modifications à valider: (utilisez "git reset HEAD ..." pour désinstaller)

    new file:   newfile1
    new file:   newfile2

5.git commit -m "quelle que soit la description que vous voulez donner" 6.git push

Et tous mes nouveaux fichiers ainsi que les plus anciens ont été vus dans mon dépôt.


0

Une réponse plus simple consiste à télécharger manuellement le fichier README.MD de votre ordinateur vers GitHub. Cela a très bien fonctionné pour moi.


0

J'utilise les options Branches, puis clique droit sur le dossier "remote / origin" puis clique sur "supprimer les branches de remote", voir l'image ci-dessous:

l'image


0

J'ai eu cette erreur sur Azure Git, et cela résout le problème:

git fetch
git pull
git push --no-verify
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.