C'est la première fois que j'utilise git pour un de mes projets, aussi pardonner c'est question sans doute basique mais je n'ai pas trouvée de réponse qui soit claire pour moi.
Le cas est assez simple, je développe sur un projet en local et j'ai un prestataire qui développe également de son côté.
J'ai fais des modifications, et lui aussi, il a fais des branches suivant les fonctionnalités sur lesquelles il a a travaillé. Je souhaite récupèrer le travail réalisé présent dans ces branches.
On me dit de faire un clone et ensuite un merge des nouvelles branches en faisant en faisant par exemple git checkout authentification (après le clone).
De ce que j'ai compris de la fonction clone, il me semble qu'il ne faut pas faire cela, je vais perdre mes modifs.
J'ai essayé quand même après avoir fais une sauvegarde, je me suis retrouvé avec 2:3 des fichiers du projet qui avaient disparus.
Pourriez vous m'indiquer quelles instructions je dois faire pour récupérer le travail accompli ?
Tu as plusieurs manières de récupérer son travail.
Je te conseille de créer une nouvelle branche à partir de ta branche pour éviter de perdre une partie de ton boulot si tu te trompes dans les commandes suivantes.
Pour créer la nouvelle branche, vas sur ta branche:
git checkout ta_branche
puis créé ta nouvelle branche:
git checkout -b nom_de_la_branche_de_backup
Ensuite pour récupérer le travail du prestataire, vas sur sa branche et fais un git pull:
git checkout prestataire_branche
git pull
Une fois fait, retourne sur ta branche de backup:
git checkout nom_de_la_branche_de_backup
Ensuite fait un git rebase:
git rebase prestataire_branche
Si tu as des conflits pendant le rebase, corrige les et fait un:
git rebase --continue
en fonction du nombre de commit à traiter, tu auras sûrement plusieurs conflits à gérer et devoir faire plusieurs git rebase --continue.
Une fois tous les conflits réglés, vérifies bien que tout fonctionne comme avant et que le code du prestataire est bien sur ta branche.
Dès que c'est fait tu n'as plus qu'à push en faisant:
git push --force
A la place du rebase, tu peux faire:
git pull branche_prestataire --merge
mais je te conseille quand même de faire la première solution.
Si lors de la résolution des conflits, tu vois que tu as trop de commits qui sont en conflits, tu peux squash les commits concernés par le rebase.
Squash signifie réunir tous les commits en un seul.
Tu auras toujours autant de conflits mais que tu pourras régler d'un coup (je ne rentrerai dans les détails que si tu vois que tu en as besoin).
- Edité par eclairia 23 août 2020 à 11:24:18
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
Merci beaucoup eclairia pour ces explications précises et détaillées,
Je vais essayer cela et je vous tiens au courant.
Christophe
Fusionner des branches avec git
× 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.
Pas d'aide concernant le code par MP, le forum est là pour ça :)