Вы правы - первой командой вы просто переключились на удаленные изменения, а последней применили удаленные изменения на вашей текущей ветке.
Помимо использования для разных задач, наиболее существенное отличие состоит в том, что git-cherry-pick
изменяет историю ветки, а git checkout
используется только для перехода к определенному моменту времени (конкретному коммиту) в истории ветки, не изменяя ее.
Переключение ветвей или восстановление файлов рабочего дерева
git-checkout
используется для просмотра истории ветвей, указывая переменную HEAD
на конкретную фиксацию. Он также используется для переключения между ветвями
Примените изменения, внесенные некоторыми существующими коммитами
git-cherrypick
наоборот, используется для размещения одного коммита из другой ветки поверх истории веток.
Например, говорит, что у вас есть следующие ветки:
master:
-------
commit1 1ae4d13257425e6a0d67f35fa13e9d76c4e6987b
Date: Thu Feb 1 15:59:15 2018 +0200
commit2 cbc7776d5542f59e1e6c7c8a22add729b
Date: Thu Feb 1 15:44:41 2018 +0200
branch:
-------
commit1 c591438ff5abbcebcbf9c06f47de7aa840
Date: Thu Feb 1 15:45:24 2018 +0200
Вы можете переключиться на ветку branch
, используя:
git checkout branch
и из branch
вы можете выполнить следующее:
git cherry-pick 1ae4d132
воспроизвести commit1
из мастера поверх commit1
из ветки, сделав это:
branch:
-------
commit1 1ae4d13257425e6a0d67f35fa13e9d76c4e6987b
Date: Thu Feb 1 15:59:15 2018 +0200
commit1 c591438ff5abbcebcbf9c06f47de7aa840
Date: Thu Feb 1 15:45:24 2018 +0200
Вы можете просмотреть свою историю и увидеть ее состояние, используя checkout
:
git checkout c591438ff5
Это укажет HEAD
на фиксацию c591438ff5
, показывая вам состояние ветки до выбора вишни (но это не изменит историю)
person
Shmulik Klein
schedule
05.02.2018