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 :

Fixer les conflits de pull request


Sujet :

GIT

  1. #1
    Membre chevronné
    Fixer les conflits de pull request
    Bonjour à tous,

    J'ai fais une pull request sur un projet php https://github.com/taniarascia/laconia/pull/9/files par contre je galère pour fixer les conflits.
    J'utilise vscode, si j'ai bien compris les conflits viennent de différences avec le repo d'origine? Dans mon cas comment je peux clean pour que la PR soit accepté s'il vous plaît?

    Merci de votre aide

  2. #2
    Responsable 2D/3D/Jeux

    Bonjour,

    Avant de faire le pull request, vous auriez du merge le dépôt dans votre branche, afin que votre branche soit au fait des modifications qui ont été fait en parallèle sur le dépôt. Vous auriez eu les conflits (ou peut être pas), et vous les auriez réglé sur votre fichier local, puis vous auriez commité le tout dans une pull request propre.
    La récente (et classieuse) FAQ GIT est là pour vous aider.

    Note : pour supprimer un fichier :
    git rm ./fichier
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre chevronné
    Merci pour votre réponse,

    Avant de faire le pull request, vous auriez du merge le dépôt dans votre branche
    J'ai fais un fork puis j'ai crée une branch pour faire la pull request, mais après le fork et le projet doivent rester indépendant le temps du développement de la fonctionnalité non? Quand vous dites merge, vous voulez dire j'aurais du merge le master de mon fork et après comparer avec la branch ou j'ai développé? (j'y avais pas pensé )
    Si j'utilise git rm ça supprime le fichier sur la branch mais si la pull request est merge cela n'affectera pas le fichier Database.php?
    Pour les problème de no new line at the end of linene comme dans le .gitignore je peux résoudre le problème?

    Merci.

  4. #4
    Responsable 2D/3D/Jeux

    Les deux branches (master et votre branche de la nouvelle fonctionnalité) sont indépendantes. Elles évoluent donc en parallèle (et ces évolutions peuvent entraîner des conflits). Le fait de merge le master dans votre branche, permet à votre branche d'être à jour par rapport au tronc. Cela veut dire, que votre fonctionnalité, pourra être intégrée sans problème, car elle est en accord avec l'état du tronc (de master) au moment du pull request.

    Pour le no new line il faut juste ajouter une ligne vide à la fin des fichiers en questions (c'est-à-dire, se mettre à la fin du fichier, appuyer sur entrée et enregistrer). Certains éditeurs le font automatiquement à la sauvegarde.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre chevronné
    Merci,

    Je commence à mieux comprendre. Quand on veut travailler sur un projet on doit:
    Forker le projet
    Le mettre à jour avec le dépot parent si ça fait un moment qu'on y a pas touché.
    Créer la branche et faire les différents commit.
    Merger master du fork dans la branche qui fera une pull request.

    Du coup j'ai pas fait ça du tout. Ma fonctionnalité fonctionne c'est dommage
    https://github.com/taniarascia/laconia/pull/9 Du coup vous me conseillez de supprimer la pull request et dans faire une autre? de supprimer les fichiers qui sont en conflits (git rm ./fichier après la pull request gardera bien le fichier du master après la pull request)?

  6. #6
    Responsable 2D/3D/Jeux

    Le mettre à jour avec le dépot parent si ça fait un moment qu'on y a pas touché.
    Créer la branche et faire les différents commit.
    En effet, avant de faire une branche, il faut avoir une copie de master (dans le fork) à jour. Sinon, c'est des ennuis assurés.



    Du coup j'ai pas fait ça du tout. Ma fonctionnalité fonctionne c'est dommage
    Rien n'est perdu. Faites une sauvegarde de votre dossier de travail, pour assurer vos arrières.

    Pour corriger tout ça, vous devez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    git checkout master
    git pull origin master
    git checkout feature-dockercompote-integration
    git rebase master
    Ensuite, vous corrigez vos conflits. Pour les corriger, il faut ouvrir les fichiers en conflits avec un éditeur et nettoyer le code (les sections en conflits sont encadrés de <<<<< / >>>>> ).
    Pour valider vos corrections de conflits, vous faites un git add fichier_en_conflit. Puis, vous commitez vos corrections.

    Vous testez que tout est bon.
    Et vous faites votre push.
    Vraiment, la FAQ GIT est aussi là pour vous aider .

    Et surtout, je ne pense pas que vous ayez besoin de faire un git rm
    Par contre, si vous voulez vraiment faire un revert (récupérer la version distante du fichier), vous pouvez faire un git checkout -- fichier
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre chevronné
    Merci pour votre aide désolé j'ai encore besoin d'un peu d'aide pour pas faire de bétise,

    Normalement cela doit mettre mon fork à jour? Dans le faq
    Si vous n’avez pas mis à jour votre dépôt local depuis quelques temps ou que le projet est très actif, il faut commencer par récupérer les dernières mises à jour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    root@debian:/home/kevin/laconia# git checkout master
    Déjà sur 'master'
    root@debian:/home/kevin/laconia# git pull origin master
    Depuis https://github.com/kevin-schmitt/laconia
     * branch            master     -> FETCH_HEAD
    Déjà à jour.
    Pourtant je suis derrière les commits c'est normal?


    Après je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    root@debian:/home/kevin/laconia# git checkout feature-dockercompose-integration
    Basculement sur la branche 'feature-dockercompose-integration'
    Votre branche est à jour avec 'origin/feature-dockercompose-integration'.
    root@debian:/home/kevin/laconia# git rebase master
    La branche courante feature-dockercompose-integration est à jour.
    root@debian:/home/kevin/laconia# git diff
    root@debian:/home/kevin/laconia# git diff --name-only --diff-filter=U
    root@debian:/home/kevin/laconia#
    Mais je n'ai rien. Merci pour votre aide.

    Edit:
    J'ai fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    git remote add upstream
    git fetch upstream
    La j'ai pu voir des conflit comme dans le fichier Database.php, j'ai résolue par la même occasion un problème de make file.
    Par contre https://github.com/taniarascia/laconia/pull/9 j'ai toujours les conflits je pense qu'il y a quelque chose que je fais mal

  8. #8
    Responsable 2D/3D/Jeux

    Une fois les conflits résolus (sur la branche), vous devez commit les modifications, puis refaire le push (qui mettra à jour le pull request).
    Malheureusement, je m'y perds.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Membre chevronné
    J'ai réussi enfin merci beaucoup.

    Je résume pour ceux que ça pourrait aider:

    -Fork du projet
    - On m'est à jour son fork
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    git remote add upstream gitDuReposForker
    - on va sur la branche master et on récupère les modifications puis on push
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    git checkout master
    git pull upstream master && git push origin maste
    - On va sur la branche de la feature et on check et fixe les différences <<<<<<<<<<<<<head
    - on push les changements et on peut faire une pull request