2010-11-18 9 views
14

Acostumbrado a SVN, siempre hago una 'actualización' antes de compartir cualquier cambio, por lo que antes de hacer cualquier intento siempre lo hago primero.Evitar que git escriba confusiones de fusiones vacías

Es molesto cuando lo saco (aunque no hubo ningún cambio en el control remoto) y veo un compromiso para una fusión con 0 changed files with 0 additions and 0 deletions. Commite como:
https://github.com/UCF/Harvard-Mobile-Web/commit/be9d6b2d1ab196554e080d8b8647a9d16c8a5ddf

Me parece un ruido inútil al mirar el historial de confirmaciones.

Quizás haya algo que me falta, ¿hay algún punto para este compromiso? Si no, ¿hay alguna manera de evitar que git escriba commits de fusión vacíos?

+0

Usted parece que se han fusionado dos se compromete a que son en sí mismos se fusiona de los mismos dos confirmaciones. Como ninguno de los dos es un descendiente directo del otro git * tiene * para realizar un commit cuando le pides que se fusione. Lo que no entiendo es por qué quería hacer la misma fusión dos veces y luego fusionar el resultado. Qué estabas intentando hacer? –

+3

1) Extraído de [cambios combinados] 2) el tiempo pasó, se retiró de nuevo [se fusionaron más cambios] 3) listo para empujar a mi tenedor, se tiró primero (asegúrese de que no haya cambios en la horquilla de los compañeros de trabajo) - sin cambios, aun así, la combinación vacía se escribe por escrito. 'git pull --rebase' era exactamente lo que estaba buscando. – Doug

Respuesta

20

La misma definición de git pull es esencialmente "buscar y fusionar con el nuevo HEAD remoto para mi rama actual". Si quiere cambiar la base de datos en su lugar, solo git pull --rebase. Esto modifica la extracción para volver a establecer sus compromisos sobre el nuevo HEAD remoto.

Personalmente, me gusta git fetch (descargue nuevos objetos desde el control remoto, pero no actualizo ninguna rama local) e inspecciono la situación, luego decido si fusionar o volver a establecer la base.

+1

Gracias. También es útil, su comentario me lleva aquí: [¿Cuándo debería usar git pull --rebase?] (Http://stackoverflow.com/questions/2472254/when-should-i-use-git-pull-rebase) – Doug

5

Hay varias opciones, todas vienen a ser lo mismo: hacer que git use la opción (como lo menciona @cdhowie).

Es probable que encuentre que prefiera uno de esos:

Opción 1: explícitamente usar git pull --rebase cada vez.

Opción 2: para cada proyecto, modificar el archivo .git/config añadiendo

[branch "master"] 
remote = origin 
merge = refs/heads/master 
rebase = true 

Opción 3: en su personal ~/.gitconfig

[branch] 
    autosetuprebase = always 

Personalmente me gusta la opción 3, ya que me permite no aplicar nada a otros desarrolladores, sin tener que escribir --rebase cada vez.

Véase también How to make Git pull use rebase by default for all my repositories?

Cuestiones relacionadas