IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GIT Discussion :

Retour en arrière sur une branche pushée sur branche distante (par ex, github)


Sujet :

GIT

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut Retour en arrière sur une branche pushée sur branche distante (par ex, github)
    Bonjour,

    Je suis pas bien doué avec git et j'ai besoin d'explications sur une opération. Imaginons que j'ai une branche branche1 et que je la push à distance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    git push origin branche1
    Après, je fais des modifications en local et je repush la branche avec ces modifications sur le distant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     git push origin branche1
    Comment puis je faire pour revenir en arrière et donc annuler les modifications faites entre les 2 pushs ? Il va de soi que je souhaite revenir au premier push, à la fois en local et sur le serveur distant.

    Je vous remercie d'avance pour la prise en considération de cette demande d'explication.

    Cordialement,

    Vinou33

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Tu reviens en arrière sur ta branche locale et tu git push --force cette branche sur le dépôt distant. Si un collègue avait tiré cette branche entre temps il est possible qu'il vienne te voir avec des tomates.

    Ça c'est la mauvaise solution.

    La bonne solution c'est de revert les commits que tu veux annuler sur ta branche locale puis tu push les nouveaux commits.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut
    Merci pour la réponse. et de me prévenir que je vais me prendre des tomates demain. En effet, j'ai fait un revert hard et un push -f vendredi. En effet, il y a eu un problème suite à ma livraison de code et pour une personne qui fait des tests sur le même serveur, j'ai du remettre la version d'avant. Bref, merci pour le retour et bonne soirée.

  4. #4
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Si tu as fait un revert alors tu as ajouté des commits qui sont des miroirs inverse pour annuler la modif. Ça c'est OK.

    Si tu as fait un reset pour revenir aux commits précédents, là tu as réécrit l'historique, et ça c'est KO (+ tomates).

    C'est important que tu comprennes bien la différence entre les deux commandes.

    Disons que tu avais cet arbre :

    Tu avais poussé ça.

    Tu t'aperçois que le commit C est foireux. Faire un revert ça consiste à écrire un commit D supplémentaire qui est le miroir inverse de C.

    Donc ensuite tu pousses (sans --force) et ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A <--- B <--- C <--- D
    Pas de problème pour tes collègues.

    En revanche si tu as fait un reset, tu es revenu sur B pour détruire le commit C, ça c'est de la réécriture d'historique publié, c'est mal.

    Ça fait que en poussant en forçant ça donne ça sur le serveur :

    Le commit C a disparu.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut
    J'ai mal écrit : c'est un reset hard que j'ai fait... Après, on utilise une branche commune où on dépose le code de nos branches. De ce fait, j'ai bien perdu du code de la personne qui est passée via un merge et un push avant moi sur la branche commune. Je l'ai remis par la suite après constat de sa disparition avec un merge de sa branche sur celle commune. Je ne le referai plus et merci pour tes explications.

  6. #6
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Si vous utilisez un outil de type GitLab / GitHub il est possible de configurer les branches de collaboration (master, develop, ça dépend comment vous les nommez) comme protected pour éviter ce genre de boulette. Ça interdira les git push --force.

    Tout le monde fait ce genre d'erreur au moins une fois, ça fait parti de l'apprentissage de Git, c'est pour ça qu'ils ont créé la fonctionnalité pour protéger des branches.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 442
    Par défaut
    Citation Envoyé par vinou33 Voir le message
    De ce fait, j'ai bien perdu du code de la personne qui est passée via un merge et un push avant moi sur la branche commune. Je l'ai remis par la suite après constat de sa disparition avec un merge de sa branche sur celle commune. Je ne le referai plus et merci pour tes explications.
    J'ajoute que si ce code perdu était important, les objets qui le composent vont persister pendant quelque temps (typiquement trois mois) avant d'être supprimés par le garbage collector de Git. Tu peux donc utiliser le reflog pour voir à quel endroit tes branches pointaient avant le reset --hard et tenter de le retrouver.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut
    Je vous remercie tout les deux pour vos retours. Maintenant, je vais chercher une lessive qui vire le jus de tomates... Bonne soirée à vous.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/03/2014, 14h18
  2. [AC-2010] Simuler un clic sur une page web sur une image javascript
    Par alex en droit dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/04/2012, 13h22
  3. Imprimer sur une page web sur une imprimante spécifique
    Par bleuerouge dans le forum Windows Forms
    Réponses: 0
    Dernier message: 07/12/2009, 09h51
  4. Pb sur une requête DELETE sur une chaine
    Par astrolane dans le forum Sybase
    Réponses: 4
    Dernier message: 16/02/2009, 09h11
  5. Réponses: 3
    Dernier message: 25/10/2007, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo