151 votes

git: Appliquer les modifications introduites par s'engager dans un repo à un autre repo

J'ai un repo1 et repo2 sur la machine locale. Ils sont très similaires, mais celui-ci est une sorte de autre branche (repo1 n'est plus maintenu).

/path/to/repo1 $ git log HEAD~5..HEAD~4
<some_sha> Add: Introduce feature X

Comment faire pour appliquer les modifications apportées par commettre <some_sha> en repo1 de repo2?

Ai-je besoin pour préparer un patch, ou est-il possible de faire quelques cherry-pick entre le repos?

Comment faire la même chose mais pour la gamme d'commet?

245voto

knittl Points 64110

Vous voudrez probablement utiliser git format-patch puis git am d'appliquer le patch à votre référentiel.

/path/to/1 $ git format-patch sha1^..sha1
/path/to/1 $ cd /path/to/2
/path/to/2 $ git am /path/to/1/0001-…-….patch

Ou, sur une seule ligne:

/path/to/2 $ git --git-dir=/path/to/1/.git format-patch --stdout sha1^..sha1 | git am

115voto

wRAR Points 13223

Vous pouvez le faire cherry-pick si vous ajoutez le deuxième repo comme télécommande pour la première (et puis, fetch).

34voto

Jakub Narębski Points 87537

Vous pouvez essayer de modifier la recette pour la comparaison s'engage dans deux dépôts différents sur GitTips page, c'est à dire:

GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo/.git/objects \
git cherry-pick $(git --git-dir=../repo/.git rev-parse --verify <commit>)

../repo est le chemin de l'autre référentiel.

Pas testé.

6voto

Ragha Points 11

J'ai écrit un petit script pour l'application de la diff de sortie des pensions de diff https://github.com/raghakh/android-dev-scripts/commit/a57dcba727d271bf2116f981392b0dcbb22734d0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X