Push rejeté

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Souhaitant me remettre à utiliser Git, je l'ai installé et configuré. Tout fonctionne bien, les commits sans problème, j'ai bien lié mon répo Github à mon local avec git remote add origin https://github.com/boopr/Javaquarium.git mais pourtant au moment de push j'ai cette erreur :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Username for 'https://github.com': boopr
Password for 'https://boopr@github.com': 
To https://github.com/boopr/Javaquarium.git
 ! [rejected]        master -> master (fetch first)
error: impossible de pousser des références vers 'https://github.com/boopr/Javaquarium.git'
astuce: Les mises à jour ont été rejetées car la branche distante contient du travail que
astuce: vous n'avez pas en local. Ceci est généralement causé par un autre dépôt poussé
astuce: vers la même référence. Vous pourriez intégrer d'abord les changements distants
astuce: (par exemple 'git pull ...') avant de pousser à nouveau.
astuce: Voir la 'Note à propos des avances rapides' dans 'git push --help' pour plus d'information.

Savez-vous pourquoi ? Car mon répo github est vide !
Merci de votre aide

Édité par Wizix

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0

Il n'est pas vide car il y a deux commits dessus ! Mais tu peux forcer le push avec l'option -f, par exemple : git push -f origin. ;)

Médicament flemmard aux pul(p)sions imprécises. “Don’t wait for the perfect moment. Take the moment and make it perfect.”

+0 -9

Cette réponse a aidé l'auteur du sujet

L'erreur indique ce qui ne va pas. Il y a eu des modifications sur le dépôt que tu n'as pas en local ; ou bien quelqu'un d'autre a push, ou bien des modifications ont été faites sur le dépôt via l'interface web de Github (probablement la création, ou encore une modification du fichier README). Essaie un git status et s'il ne t'affiche rien de problématique (conflits…), tente un git pull comme te le recommande l'erreur.

+0 -0

Ne jamais utiliser git push -f. Jamais.

Même lors d'un rebase (pour squash des commits par exemple) ?

Surtout ici. Le proposer en premiere solution a ce sujet est criminel.

Bah vu qu'il y a un commit qui créer un README et un autre qui le supprime, je trouve plus propre de ne rien avoir du tout. Mais j'aurais dû plus expliquer la dangerosité de cette commande !

Médicament flemmard aux pul(p)sions imprécises. “Don’t wait for the perfect moment. Take the moment and make it perfect.”

+0 -0

Ne jamais utiliser git push -f. Jamais.

Même lors d'un rebase (pour squash des commits par exemple) ?

Normalement non. La plupart des plateformes desactivent le force par defaut d'ailleurs.
Tu peux squash et rebaser autant que tu veux en local, pour avoir un joli historique avant de pusher. Les risques de problemes, d'inconsistance et d'effacement d'historique sont tellement important avec le push force que l'on prefere generalement utiliser un commit revert ou autre pour corriger a posterio une erreur pushee.

Édité par KFC

+4 -0
Auteur du sujet

Désolé, j'avais commencé à écrire ma réponse mais un imprévu est arrivé.

En tout cas, merci de votre aide, j'ai bien résolu mon problème. Petite question quand même, Git ne s'utilise qu'avec Github où je peux conserver les fichiers du git sur mon ordinateur (ou un disque dur) et une application pour me gérer tout ça ? (Je préfère des applications locales que des sites internet…).

Encore merci.

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0

Parce qu'il est explicitement écrit dans nos règles de contributions :

Essayez d'éviter les commits dits inutiles (fix previous commit, …). Si vous en avez dans votre pull-request, on vous demandera probablement de faire un squash de vos commits.

lesdites règles

… J'en déduit que c'est très mal ;)

Doctorant et assistant en chimie à l'Université de NamurEx-dev' pour ZdS (a aidé à réaliser la ZEP-12 !) • Carniste cis (y parait que c'est une injure)

+0 -0

C'est effectivement refusé et même désactivé dans toute boite un peu sérieuse.
C'est pas parce que ZdS se l'autorise que ce n'est pas le mal absolu. :p

La différence c'est que les PR sont un outils Github qui vous utilisez pour un truc participatif. Les PR ne font pas partie de votre historique donc ça ne change rien à ce que j'évoque. Par ailleurs, le travail de squash et de mise au propre du travail à pusher se fait… avant de pusher. Il est donc de la responsabilité de la personne qui fait la PR de le faire avant. Sauf que comme ZdS utilise des PR et pas d'outil de relecture collaborative, tu es obligé de « pushé » puis de faire une PR.

+0 -0

En fait, le push -f est mal sur des dépôts utilisés par plusieurs personnes. Sur un dépôt (ou une branche d'un dépôt) utilisé(e) par une seule personne, ça ne pose pas de problème !

Médicament flemmard aux pul(p)sions imprécises. “Don’t wait for the perfect moment. Take the moment and make it perfect.”

+0 -1
Auteur du sujet

Je me permet de ré-itérer ma question :

Petite question quand même, Git ne s'utilise qu'avec Github ou je peux conserver les fichiers du git sur mon ordinateur (ou un disque dur) et une application pour me gérer tout ça ? (Je préfère des applications locales que des sites internet…).

Merci de votre aide!

Édité par Wizix

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0

Cette réponse a aidé l'auteur du sujet

Tu peux utiliser Gît tout seul, avec GitHub ou avec un autre logiciel/site web ! Gît permet d'avoir tes fichiers et commits à plusieurs endroits. Tu peux aussi éditer tes fichiers en local et les envoyer plus tard sur GitHub. Tu peux aussi éditer tes fichiers depuis un ordinateur, les mettre sur GitHub (avec git push) puis les récupérer sur un autre ordinateur (avec git clone ou, si tu as déjà fait git clone avec git fetch puis git pull) !

Gît est vraiment puissant. N'hésite pas à lire ce tutoriel sur Git et à faire git -h et git help [commande] (où commande peut être "clone", "push", "fetch"…) pour voir tout ce qu'il est possible de faire ! ;)

Médicament flemmard aux pul(p)sions imprécises. “Don’t wait for the perfect moment. Take the moment and make it perfect.”

+0 -2

et pas d'outil de relecture collaborative

Höd

Aurais-tu un exemple d'outil de la sorte ? Cela consisterait à faire revoir le code par d'autres avant de l'envoyer sur un autre dépôt que celui en local ?

Vayel

Il y a pléthore d’outils.

Ensuite, c'est au workflow de définir la manière dont tu travailles, donc cela va également dépendre de la méthode Agile utilisée mais globalement, sur une tâche atomique cela peut se passer comme suit:

  • Développement / Implémentation. De un à quelques commits selon la granularité de la tâche, référencé par l'identifiant de la tâche. Sur une branche ou non, selon le workflow git défini.
  • Mise en review de l'ensemble des commits (avec les outils soient tu dois donner la plages des hashs des commits locaux, soit créer un patch à uploader).
  • Correction des petits soucis du code via des commits à la con ("[id] typo - to rebase" par exemple) ou pas (si la relecture montre que le code est mauvais).
  • Lorsque le code est validé, celui qui l'a proposée rebase, squash, de manière à obtenir un historique parfait.
  • Il push.

Rien n'est sur le dépôt avant l'acceptation du code local. Après, c'est dans le cas où les gens travaillent dans une même organisation car il faut pouvoir donner les droits de mettre en ligne les propositions, etc. Les PR sont en fait l'outil collaboratif qui permet de concilier les deux:

  • relecture de code
  • historique propre

Et du coup, la partie qui consiste à demander de rebaser ou réarranger l'historique de la PR a pour seule différence avec le rebase local que le fait qu'elle soit techniquement déjà pushé sur un clone. Mais au final, le dépôt officiel lui, n'utilise jamais de force et aucun dépôt ne devrait, sauf ceux destiné à fait des PR.

+1 -0

Je me permet de ré-itérer ma question :

Petite question quand même, Git ne s'utilise qu'avec Github ou je peux conserver les fichiers du git sur mon ordinateur (ou un disque dur) et une application pour me gérer tout ça ? (Je préfère des applications locales que des sites internet…).

Merci de votre aide!

Wizix

Tu peux avoir des dépots git locaux juste pour avoir le côté "versionnement". Un simple git init dans un dossier et pouf ca y est tu as un dépot git qui fonctionne en local !

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte