lab 30 Résolution des conflits
Buts
- Apprendre comment gérer les conflits pendant une fusion (merge)
Fusionner master dans saluer 01
Maintenant, retournons dans la branche saluer et essayons de fusionner master.
Execute:
git checkout greet git merge master
Output:
$ git checkout greet Switched to branch 'greet' $ git merge master Auto-merging lib/bonjour.rb CONFLICT (content): Merge conflict in lib/bonjour.rb Automatic merge failed; fix conflicts and then commit the result.
Si vous ouvrez lib/bonjour.rb, vous allez voir:
File: lib/bonjour.rb
<<<<<<< HEAD require 'faireunsalut' # L'argument par défaut est Monde name = ARGV.first || "Monde" faireunsalut = Faireunsalut.new(name) puts faireunsalut.saluer ======= # L'argument par défaut est Monde puts "Quelle est votre nom?" my_name = gets.strip puts "Bonjour, #{my_name}!" >>>>>>> master
La première section est la version dans le head de la branche courante (saluer). La deuxième section est la version dans la branche master.
Corriger le conflit 02
Vous devez manuellement résoudre le conflit. Modifier lib/bonjour.rb
pour être comme suivant.
File: lib/bonjour.rb
require 'faireunsalut' puts "Quelle est votre nom?" my_name = gets.strip faireunsalut = Faireunsalut.new(my_name) puts faireunsalut.saluer
Commiter la résolution du conflit 03
Execute:
git add lib/bonjour.rb git commit -m "La fusion depuis master corrige le conflit"
Output:
$ git add lib/bonjour.rb $ git commit -m "La fusion depuis master corrige le conflit" [master ee34d83] La fusion depuis master corrige le conflit 1 file changed, 4 insertions(+), 1 deletion(-)
Fusion avancée 04
Git ne propose aucun outil graphique de fusion, mais il fonctionnera très bien avec n’importe quel outil tiers de fusion que vous souhaiteriez utiliser. Voir http://onestepback.org/index.cgi/Tech/Git/UsingP4MergeWithGit.red pour une description de l’utilisation de l’outil de fusion Perforce avec git.