git cherry pick - ghdrako/doc_snipets GitHub Wiki

git cherry-pick

skopiować commita (bądź kilka commitów) z jednego brancha na drugi.

git cherry-pick <commit_id>..<commit_id>
git cherry-pick <Commit1> <Commit2> <...>

Jest to bardzo prosty sposób określenia, że chcesz przenieść zmiany poniżej swojej obecnej lokalizacji (HEAD).

git cherry-pick zrzuci commit z dowolnego miejsca drzewa na HEAD (o ile ten commit nie jest przodkiem HEAD).

Przyklad - Chcemy skopiowac z brancha feature 3 commity 4ce909f do 508775f

git checkout feature
git log
4ce909f ...
3b8775b ...
508775f ...
208775b ...
# przelaczamy sie na branch do ktorego chemy przeniesc
git checkout master
git cherry-pick 4ce909f..208775b
git cherry-pick b2864db
# gdy conflikt
git cherry-pick --continue  # po rozwiazaniu
git cherry-pick --abort
git cherry-pick -x 119a04c  # dodana informacja z jakiego commita został stworzony ten commit
git push --set-upstream origin 

Example

# history
* 08ac685 (HEAD -> master) File1.txt updated
| * acf235c (Feat/a) File2.txt created
| * 5fcc065 File1.txt updated
|/
* 4658417 File1.txt updated
* 6ba9629 File1.txt created

# We need to move the last commit from feat/a to the master branch
$ git cherry-pick -e acf235c

The command creates a new commit out of the 185a6b7 commit. The -e parameter edits the new commit’s message before recreation

* 5c3ce5b (HEAD -> master) File2.txt created is picked
from FEAT/A
* 08ac685 File1.txt updated
| * acf235c (Feat/a) File2.txt created
| * 5fcc065 File1.txt updated
|/
* 4658417 File1.txt updated
* 6ba9629 File1.txt created
⚠️ **GitHub.com Fallback** ⚠️