Partage
  • Partager sur Facebook
  • Partager sur Twitter

Git branche cafouillage

head / master / develop : je me suis perdu

    4 juillet 2019 à 0:46:34

    Hello,

    voilà que je m'apprête à créer un petit projet que je souhaite envoyé sur mon git,

    Alors je me suis fait tranquillou mon petit dépôt local, mon dépôt distant, j'ai créer une branche develop sur mon dépôt distant, je les ai connecté,  bref j'ai tout bien tout préparer komifo pour pouvoir commencer à coder :)

    maintenant j'ai voulu push tout ce que j'avais fait, donc de mon depot local jusqu'au depot distant, sur la branch develop et garder la master vierge...

    Et là ce fût le drame, je me suis emmêlé les pinceaux, et je ne sais pas bien ce que j'ai fais, j'ai déjà bien démarré le projet et je n'ai pas envie de tout perdre à cause d'une foutu mauvaise manip' causé par un boulet d'une grand renommée : moi :p

    Il faut savoir que j'utilise ce bon gros machin de IntellIJ, du coup je peux vous faire part de l'état actuel des chose et d'après l'IDE, et ça n'a pas l'air d'allé bien fort... Regarder ci dessous pour mieux me comprendre :

    alors là l'initialisation c'est mon code (celui que je veux garder)

    le add ReadMe cest de la bouze ! (projet vierge avec un simple readme)

    J'aimerais avoir ma branche master sur le readMe, ma branche develop et mon Head sur l'initialisation

    J'aimerai aussi savoir ce que c'est que la différence entre le vert (master et develop) et le violet (origin/master et origin/develop)

    (le head est donc en jaune)

    à oui et j'allais oublié mon working dir est bon (il y a tout ce que je veux commit dedans)

    Si une âme sensible, vive d'esprit et avec un cerveau capable de m'aidé pouvait m'orienter je la remercierai grandement ! :)

    -
    Edité par UgoEvola 4 juillet 2019 à 0:54:28

    • Partager sur Facebook
    • Partager sur Twitter
      4 juillet 2019 à 2:43:48

      Salut

      Je suis en train d'apprendre tranquillement le fonctionnement de git, donc, teste ailleurs ce que je vais te proposer et surtout, il faudra que tu "traduises" en langage que comprend git ce que je vais écrire.

      Si je comprends bien, tu as un dépôt local et par sécurité tu as créé une branche Develop pour ne pas toucher à master tant que tu n'es pas satisfait du travail.

      Je suppose que tu as envoyé Develop bien développé sur ton dépôt distant et par la suite tu as bossé en distant sur la branche master alors que tu voulais continuer sur Develop. Tu t'es rendu compte après pas mal de développement que tu travaillais sur master de distant, et les navettes entre local et distant ont modifié le master des 2 dépôts. Par conséquent, la branche master du local que tu voulais garder vierge ne l'est plus du tout. C'est bien cela ?

      Si oui, alors, voilà mon idée :

      Tu vas pull le dépôt distant sur ton dépôt local. Ensuite, tu vas créer une branche temporaire (TMPBranch, par exemple). Faudra que tu sois consciencieux et que tu vérifies très souvent que tu es dans cette branche. Tu vas lire les log de manière dichotomique. En gros, tu prends le log médian, et si le travail te convient, tu coupes au log médian plus récent : tu as 20 logs, tu lis le log 10, c'est bien, tu lis le log 15 (10 + (20 - 10) / 2 = log 15), et tu réduis ton tri jusqu'à arriver au dernier log qui ne te convient pas. Je suppose par cette phrase : "j'ai déjà bien démarré le projet et je n'ai pas envie de tout perdre" que tu as beaucoup de log (d'où la méthode dichotomique pour trier) et que le dernier log pas terrible ne sera pas le dernier log.

      Maintenant, imaginons tu as 100 log, et que ça devient le bazar au 90. Tu vas bien vérifier que tu es à TMPBranch, tu vas analyser et modifier les log 90 à 100. Une fois que tu es satisfait, tu fusionnes TMPBranch sur Develop (de local toujours, donc pense à vérifier). Normalement, la branche Develop de ton dépôt local sera comme tu le souhaites (sans bazar).

      Tu lances le dépôt distant, tu crées et te place dans une branche Develop2, tu push et ça devrait être bon.

      Enfin, le dépôt distant te sert à faire ton projet sur différents outils, ou c'est un projet à plusieurs personnes ? Quoi qu'il en soit, je serais toi, je ne travaillerais pas sur le distant, je pull, je bosse en branche Develop du local, je suis satisfait, je push sur le Develop2 du distant, je fais cette navette jusqu'à créer une première version potable du projet.

      Je ne sais pas si tu saisis la différence entre revert et reset, donc, je la mets :

      de ce que j'ai compris, si on a 100 log, et qu'on fait reset log 90, ça va détruire les log 91 à 100, on revient donc à 90. Si les logs 91 à 100 ne sont pas tous à jeter, reset n'est pas une solution ;

      si on fait un revert log 90, ça ne modifie que les actions du log 90. Ça peut, je pense, impliquer des erreurs pour les logs 91 à 100. Mais, si ton log 90 c'est l'ajout de "Coucou" au fichier Bonjour.txt, le revert log 90 va supprimer "Coucou" de ce fichier.

      Donc, si j'ai juste, tu devras tester l'évolution de ton code à chaque log, à partir du log 91, et corriger les erreurs, parce que je pense que tu préféreras utiliser revert plutôt que reset.

      • Partager sur Facebook
      • Partager sur Twitter
        4 juillet 2019 à 13:28:26

        D'accord merci pour ta réponse :D

        J'ai bien tout compris ce que tu m'a expliqué, j'ai finalement réussi au bout de 2h, j'ai utilisé comme tu me l'as dit une branche temporaire ^^

        Par contre je n'avais que 2 logs : les deux que jai montré, en fait jai commencé mon projet solo, mais je veux le partagé avec un "collègue" ami pour quon puisse faire nos curieux tous les deux :p

        Donc là j'ai mis en place mon git, et du coup ouais la branche develop que pour dev :p

        En fait le probleme venait du fait d'un espece d'historique de ce genre :

        https://stackoverflow.com/questions/37937984/git-refusing-to-merge-unrelated-histories-on-rebase

        du coup je ne pouvais plus push sur develop, et ouais il fallais vraiment que je fasse attention avec le revert / reset pour rien effacer merci ! :)

        • Partager sur Facebook
        • Partager sur Twitter
          4 juillet 2019 à 14:44:24

          Salut

          Après l'envoi de mon message, j'ai testé revert et reset, ça fait bien ce que j'ai dit et revert ajoute un log avec en commentaire par défaut : revert <le commentaire de log qu'on revert>. J'ai même appris par cette expérience, qu'il n'y a pas de branche tant qu'on a pas effectué un commit.

          Tu dis que tu as peu de log, 2 c'est ça ? et tu dis aussi que tu as bien avancé dans ton projet. Je pense qu'il faut que tu revoies ta méthode de travail pour les commits. Évidemment, tu ne vas pas commit à chaque fois que tu ajoutes une variable, mais, tu commit à chaque étape, tu peux aussi faire des commit "intermédiaires" si l'étape en question est longue ou importante. D'ailleurs, l'idée de la branche develop n'est pas bonne selon les tutos que j'ai feuilletés et surtout ce pourquoi git existe. Mieux vaut que tu crées une branche d'une étape, tu codes dedans, tu testes dedans, tu commits dedans, et quand c'est bon tu fusionnes sur master. Tu peux te créer un fichier qui numérote les log et tu mets ce fichier en gitignore, dedans, tu mets par exemple : début création base de données Clients = log 12, début insertion des premiers clients = log 15. Comme ça, tu sais où te rendre si finalement ton master ne te convient pas trop et que tu veux modifier quelques commits, c'est à ce moment que tu peux créer une branche temporaire générale.

          Quelques conseils pour débutants, faire un add et commit d'un seul fichier tant qu'on ne maîtrise pas la gestion de projet ; ne pas hésiter à abuser de status et branch pour voir où on en est et où on se trouve, surtout si on lâche le projet quelques jours, au retour, on se retrouve dans la dernière branche sélectionnée.

          • Partager sur Facebook
          • Partager sur Twitter

          Git branche cafouillage

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown