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 :

Comment faire pour récupérer un seul dossier d'une branche


Sujet :

GIT

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut Comment faire pour récupérer un seul dossier d'une branche
    Bonjour

    Je suis habitué à SVN CVS et beaucoup d'autres
    je ne m'attendais a avoir de telles difficultés avec git

    Avec SVN un click dans mon ide ou dans tortoise je peux récupérer un dossier une branche ou n'importe quel élément qu'il soit dans une branche un tag ou le trunk

    Il m'arrive donc souvent pour faire des tests de prendre tout un dossier d'une branche pour le mettre dans une autre.
    Cela me permet d'évaluer la tâche qui va m'attendre lors de la fusion.

    Un simple rollback me permet de récupérer la source de la branche sur laquelle je travaille.


    Il m'arrive aussi très souvent de ne descendre du repository qu'un dossier (un sous projet) et de ne récupérer les 100 de millier de lignes de code du projet total.


    Mais avec git j'avoue avoir beaucoup de mal
    Le seul outil, a peut près compréhensible pour moi, est le plug-in éclipse. L'outil GitHub Desktop m'a plus l'air d'un gadget qu'autre chose.

    Mais avec les deux, c'est soit tout le repo, soit rien.
    vu que cela me semble difficile à vivre sur des très gros projets comme le mien, j'imagine bien qu'il doit y avoir un moyen
    Mais je ne l'ai pas trouvé.


    autre difficulté j'ai travaillé sur deux branches
    Mais je n'ai pas poussé sur le serveur, car je ne suis pas sûr de moi.
    avec SVN c'est simple j'ai une branche dans chaque dossier une comparaison et je connais les différences des deux futurs commit avant de les faire
    Avec git j'ai basculé de l'un à l'autre, mais je n'en vois toujours qu'un.

    Comment s'assurer que les deux commit des deux branches seront cohérent avant de les faire ?

    A+JYT
    PS Je suis sous Mac OS (et je n'ai pas XCode)

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    salut
    j'ajoute une question

    des développeurs ont ajouter leur settings de leur idé sur le repos
    et cela dans de multiples dossier

    hors le fait que ça ne sert a rien ça mets la grouille.
    Mon mac ne trouve pas le chemin C:\.....
    et si je n'y prends garde vu que le fichier est dans le repos lorsque moi je vais faire mon commit
    c'est un autre qui sous windows ne connaitra pas le chemin /opt/...

    J'ai cherché en vain comment faire le ménage
    avec SVN tortoise je faisais "simplement remove to the server and add to ignore recursively" Ok le texte du menu est long mais il dit bien ce qu'il fait

    Je n'ai pas trouvé comment enlever du serveur sans enlever localement ce que je ne veut pas
    ni comment ignorer de façon récursive.

    si j'enlève localement pour que ça ce propage au serveur. il me faut faire un merge pour que le master soit à jour
    mais ça n'empêchera pas quelqu'un de le remettre ou de le laisser dans ça branche.

    Cela signifie-t-il qu'avec git on est condamné à regarder un a un tous les milliers de fichiers du source pour s'assurer que ça ne reviendra pas lors d'un merge ?


    s'il y a une solution je suis preneur.

    A+JYT

  3. #3
    Membre éprouvé

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Points : 1 230
    Points
    1 230
    Par défaut
    Bonjour,

    Si tu souhaites travailler en // sur 2 branches tu devras faire 2 clones de ton projet (ie. avoir 2 workspace et une dupplicatiob de fichiers)...
    ou mieux, n'avoir qu'un seul clone/workspace et basculer d'une branche à l'autre ce qui ne pose aucun problème!

    Le fonctionnement est différent de svn : avec git tu résouds les conflits en local est tu pousses... en gros celà je dire que lorsque tu pousses tu es sûr de plus avoir de conflit !
    Le développeur est donc responsable de son push tu as donc une inversion de responsabilité par rapport à svn... le travail de merge et au est en local et non pas sur le serveur.

    Lorsque tu travailles sur 2 branches et que tu veux repporter des modifs (des commits et NON pas des fichiers... un commit n'est pas lié à un fichier) :
    - tu synchronises ta branche locale avec le dépôt
    - tu merges ta 2ième branche (merge global, ou partiel via cherry-pick)
    - tu peux pousser pour synchroniser ta branche avec le serveur...

    Ne t'inquiètes pas, git te permettra de travailler sur de très gros projets. Les vieilles habitudes sont difficiles à perdre git ne fonctionne pas par fichier/folder... ton workspace contient tout le projet.
    Mais rien ne t'empêche (et c'est conseillé) de scinder ton projet...

    Tu peux biensûr ignorer des fichiers
    - celà commence par un la création d'un .gitignore
    - tu peux temporairement ignorer un fichier par 'git update-index --assume-unchanged'
    - etc...

    Attention : supprimer un fichier en local et pousser n'enlève pas le fichier de l'historique. Si un de tes développeurs pousse par erreur un fichier confidentiel, il te faudra purger l'historique !

    a+
    Philippe

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Merci
    Effectivement il est dure de se defaire de 30 ans d'habitudes.

    A+

Discussions similaires

  1. Comment faire pour récupérer l'état du focus d'un élément.
    Par hammag dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/06/2009, 09h10
  2. Réponses: 5
    Dernier message: 27/04/2009, 16h15
  3. Réponses: 5
    Dernier message: 27/03/2009, 13h01
  4. Réponses: 1
    Dernier message: 31/10/2006, 11h15

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