2011-03-02 13 views
22

Tengo curiosidad sobre este comportamiento y tal vez sea solo porque vengo de usar SVN y bazar en su mayoría. (Estoy aprendiendo git para interactuar con la excelente github.)¿Por qué se compromete git después de una fusión por defecto?

Parece contra intuitivo para mí y como si sería mejor para

git merge [branch] --no-commit

que sea el predeterminado para animar a la gente a hacer Seguro que la fusión fue como lo querían antes de comprometerse.

+2

Por cierto, git merge terminará con un conflicto si algo sale mal. Además, si por algún motivo desea que los cambios introducidos por la fusión no sean resueltos, puede hacer "git reset HEAD ^" justo después de la exitosa "combinación de git" que retrocederá a una confirmación dejando todos los últimos cambios de confirmación (que serán fusionar commit) sin compromiso. –

Respuesta

25

El objetivo establecido por Linus Torvalds al crear Git era realizar todas las fusiones que podían resolverse automáticamente ... FAST. Ver su 2007 Google Tech Talk: Linus Torvalds on Git (transcript)
I.e. cientos de fusiones en menos de unos pocos segundos.

Por lo tanto, un "--no-commit" de forma predeterminada sería bastante contrario a ese propósito.

Con --no-commit realizar la combinación, pero pretender que la fusión no pudo y no confirmación automática, para dar al usuario la oportunidad de inspeccionar y modificar el resultado de la fusión antes de comprometerse aún más.

Extracto de Linus's talk (video):

Lo único que importa es qué tan rápido se puede fusionar.
En git, puede fusionar ... Combino 22,000 archivos varias veces al día, y me siento infeliz si una fusión lleva más de 5 segundos, y todos esos 5 segundos solo están descargando todas las diferencias, bueno no las diferencias pero son los deltas entre dos árboles, la fusión en sí tarda menos de medio segundo.
Y no tengo que pensarlo.
[...] Ese es el tipo de rendimiento que realmente cambia la forma en que trabaja.

+0

Ah, ¿así que básicamente la suposición es que si estás fusionando es lo que querías hacer y quieres hacerlo lo más rápido posible? – Will

+2

@Will: sí, pero no se olvide del otro flujo de trabajo: restaure su trabajo antes de fusionarlo (lo que luego daría como resultado una combinación de avance rápido: http://stackoverflow.com/questions/804115/git-rebase-vs -git de combinación/804178 # 804178) – VonC

+0

video de la charla se hace referencia en esta respuesta http://www.youtube.com/watch?v=4XpnKHJAok8&feature=player_detailpage#t=3118s – Will

Cuestiones relacionadas