2009-09-30 18 views
5

Borro un archivo en mi directorio de trabajo. Y luego hago un 'git pull'. Otra persona en mi equipo modifica el mismo archivo y 'git push' en HEAD.Cómo ver el cambio durante un 'conflicto de combinación' en git rebase

Así que cuando hago un 'git rebase', me siento un algo conflicto de combinación como 'git CONFLICTO (eliminar)'

Mi pregunta es ¿cómo puedo averiguar qué cambios hizo la otra persona en el equipo hizo al archivo que 'elimino'?

Gracias.

Respuesta

7

cuando hay conflicto durante una combinación o rebase, diferentes versiones de un archivo están disponibles a partir de:

  • respectivas ramas:

    $ git show HEAD:path/to/file 
    $ git show branch:path/to/file 
    
  • como etapas 1, 2, 3 en el índice:

    $ git ls-files --unmerged 
    # ... 
    $ git show :1:path/to/file 
    $ git show :2:path/to/file 
    

También hay herramientas como "git diff --cc" y "git log --merge".

Consulte la documentación para obtener más información.

+0

Gracias. ¿Hay algún compromiso que me permita obtener todo el archivo en la rama HEAD of tracking? Estaba pensando en hacer 'git show: 2: path/to/file> myFile' pero eso puede cambiar el formato o el avance de línea. ¿Hay una mejor manera? – n179911

+0

Puede usar bajo nivel "' git cat-file -p: 2: path/to/file> myFile' ", creo. –

4

Git guarda una copia del estado de las ramas ascendentes en su repositorio como ramas de "seguimiento remoto". Si haces un git branch -r, verás una lista de todas las sucursales remotas. Elija el que corresponde a la rama en la que está trabajando, y hacer algo como:

git diff HEAD^..origin/master 

Esto debería mostrar que los cambios entre sus padres CABEZA (asumiendo que su borrado fue la última confirmación, modificar según sea necesario) y la estado actual de la rama ascendente.

0

Crea otra rama a partir de tu última buena tracción conocida. Luego haz un Pull en la nueva rama de tu amigo. Luego podrá invstigate el registro de la nueva rama y luego sabrá cómo fusionar dos ramas juntas en una, luego podrá empujar hacia él.

Nuestra configuración de desarrollo normal es tener un repositorio GIT del que todos rebases. Recomiendo volver a basar en lugar de tirar desde un repositorio central. Esto se debe a que si extraes del repositorio y luego rebasas al mismo repositorio tus commits que enviaste al repositorio entrarán en conflicto con tu rama actual. En general, encontramos que es más fácil si tiene que usar tirar o empujar, para usar parches en su lugar.

Por ejemplo .. Nunca rebase desde un repositorio del que ha sacado.

Cuestiones relacionadas