¿Cómo se puede comparar la fusión de conflictos en Git con la fusión de conflictos en Subversion?

Cuando trabajo en Subversion, siempre hago una svn update antes de una svn commit . Si hay algún conflicto, me avisan cuando realizo la actualización. Luego, en mi directory de trabajo, obtengo filename.java , filename.java.mine , filename.java.r10 , y filename.java.r13 . Basado en esos files, descubro cómo resolver el conflicto, marcarlo como resuelto y confirmarlo.

Soy relativamente nuevo en Git, así que estoy tratando de descubrir cuál es el equivalente al flujo de trabajo anterior para git. ¿Qué commands de git posiblemente resultarán en conflictos de fusión? ¿Hay equivalentes de los files anteriores que se mostrarán en mi directory de trabajo?

Hay una serie de subcommands de git que pueden dar lugar a conflictos de combinación, incluidos merge (y pull ya que es esencialmente fetch seguido de merge ), cherry-pick rebase , rebase y otros. git embargo, git ocupa de los conflictos de fusión de una manera fundamentalmente diferente. En lugar de crear files individuales para las diferentes versiones, crea un único file que tiene secciones marcadas con delimitadores para indicar de qué parte de la ecuación de fusión tripartita proceden. Así que edite un file en conflicto y elimine las secciones que no desea, y los delimitadores, o si ninguno de los lados es el correcto, reemplácelo con un híbrido de fusión manual apropiado, luego git add y git commit . Los delimitadores son una secuencia de 7 < , = y > (y a veces | , si tiene el formatting de diff3 configurado) caracteres que se parecen a esto:

 <<<<<<< stuff from your version of the file 

| stuff from the common ancestor of the two ======= stuff from the version you're merging in >>>>>>>

Si no está usando marcadores de conflicto de diff3 diff3, | los delimitadores y las líneas ancestrales comunes faltan.

Puede escribir git help merge para leer más sobre él.