lab 30 Resolviendo Conflictos
Metas
- Aprender a manejar conflictos en una fusión
Fusionar "master" a "greet" 01
Regrese a la rama "greet" e intente fusionar el nuevo "master".
Ejecute:
git checkout greet git merge master
Salida:
$ git checkout greet Switched to branch 'greet' $ git merge master Auto-merging lib/hello.rb CONFLICT (content): Merge conflict in lib/hello.rb Automatic merge failed; fix conflicts and then commit the result.
Si abre lib/hello.rb, podrá ver:
Archivo: lib/hello.rb
<<<<<<< HEAD require 'greeter' # Default is World name = ARGV.first || "World" greeter = Greeter.new(name) puts greeter.greet ======= # Default is World puts "What's your name" my_name = gets.strip puts "Hello, #{my_name}!" >>>>>>> master
La primera sección es la versión en el encabezamiento de la ramificación actual (greet). La segunda sección es la versión en la rama "master".
Corija el Conflicto 02
Necesita resolver el conflicto manualmente. Modifique lib/hello.rb
para tener lo siguiente:
Archivo: lib/hello.rb
require 'greeter' puts "What's your name" my_name = gets.strip greeter = Greeter.new(my_name) puts greeter.greet
Commit the Conflict Resolution 03
Ejecute:
git add lib/hello.rb git commit -m "Merged master fixed conflict."
Salida:
$ git add lib/hello.rb $ git commit -m "Merged master fixed conflict." [greet 3165f66] Merged master fixed conflict.
Fusión Avanzada 04
git no provee una herramienta gráfica para fusionar, pero funcionará correctamente con cualquier herramienta de terceros que desee utilizar. Vea http://onestepback.org/index.cgi/Tech/Git/UsingP4MergeWithGit.red para una descripción de cómo utilizar "Perforce", una herramienta para fusión con git.