2010-06-06 19 views
10

Estoy manteniendo un repositorio A.git parcial pull

Otro contribuyente ha clonado A en otro repositorio B.

Más tarde, otro colaborador añadió archivos F, que es irrelevante para mí, en B.

Ahora desea fusionar los cambios en B de nuevo a Un, pero sin cometer F. ¿Cómo hacer eso?

+0

Quizás este hilo lo ayude: http://www.mail-archive.com/[email protected]/msg00653.html HTH –

Respuesta

7

Recoge la cabeza y elige desde allí.

git remote add jessica git://jessica.com/repo.git 
git fetch jessica master 
git cherry-pick 235a5 
... 
1

La respuesta corta es que no se puede "extraer parcialmente" con git.

Sin embargo, puede tirar de los cambios de B, y luego usar git-rebase (1) o git-filter-rama (1) para modificar el cometer (s) que contiene Fantes de empujar a A. Tenga en cuenta que esto cambiará (en relación con B) los valores hash de la (s) confirmación (es) que modifique, por lo que las fusiones futuras intentadas en B serán menos inteligentes que de costumbre.

Eche un vistazo a the Pro Git chapter on Rewriting History.

2

que podría hacer:

git checkout <remote_branch> <paths> 

donde es <paths> los archivos que usted realmente desea. esto es más fácil si los archivos que desea están en directorios separados a los archivos que no, ya que puede usar comodines.

otra parte, trate:

git pull --squash 

esto puede ser un manual de bits, como usted entonces tiene que ir y eliminar los archivos que no desee antes de comprometerse, pero también es la única manera de hacerlo si los archivos que no desea han sido agregados como parte de la misma confirmación que cambió los archivos que desea desea.

el inconveniente (bastante importante) es que se pierde el historial de confirmación de la rama remota.