2015-01-10 3 views
1

git cherry-pick не является идемпотентным в том смысле, что фиксация хеша после выбора вишни зависит от текущего времени и текущего пользователя (как commiter).Повторяющийся git cherry-pick

Я хотел бы иметь идемпотентности Собственость, это означает, что в два раза последовательность:

git reset --hard BASE-COMMIT 
git cherry-pick INTERESTING-COMMIT 

, а затем снова:

git reset --hard BASE-COMMIT 
git cherry-pick INTERESTING-COMMIT 

результаты в точности то же хэш фиксации в Головном оба раза.

Есть ли способ сказать git для повторного использования имени Committer и даты Committer от первоначальной фиксации?

ответ

3

Вы можете изменить дату фиксации при проверке вишни. Например:

git reset --hard BASE-COMMIT 
export GIT_COMMITTER_DATE=$(git log -1 --format='%ct' INTERESTING-COMMIT) 
git cherry-pick INTERESTING-COMMIT 

Это предполагает, что пользователь является стабильным и, в противном случае вам также необходимо установить GIT_COMMITTER_NAME и GIT_COMMITTER_EMAIL, как это:

export GIT_COMMITTER_NAME=$(git log -1 --format='%cn' INTERESTING-COMMIT) 
export GIT_COMMITTER_EMAIL=$(git log -1 --format='%ce' INTERESTING-COMMIT)