2014-02-21 5 views
0

У меня проблема, когда я вишу, возьмите фиксацию из gerrit, внесите изменения и т. Д. И я хочу вернуть их с помощью -amend для моего фиксации до этого cherrypick, как я могу это сделать? Прямо сейчас я просто добавьте -A все файлы, но я понятия не имею, что делать дальшеGerrit cherry pick

+0

Действительно ли вы имеете в виду просмотр/изменение вместо «совершить с геррита» и выборки/проверки вместо вишневого выбора? –

+0

сборник вишни - это патч-набор от Gerrit? – HiB

ответ

1

Внесение изменений возможно только для последней фиксации. Предположим, что вы совершаете фиксацию для исправления (имеет код SHA-1) 111. Вы можете увидеть реальный код SHA-1 вашего фиксации в git log.

Вы можете использовать git reset --hard, чтобы указать местную ветку на фиксацию, которую вы хотите изменить. Обратите внимание, что с «простым» git без Gerrit это будет очень плохой идеей, поскольку вы переписываете историю, изменяя уже нажатую фиксацию!

Я предполагаю, что у вас уже есть локальные, незафиксированные изменения в некоторых файлах, и вы хотите применить эти изменения к фиксации 111. Вы должны занести эти изменения, потому что git reset --hardwill remove them and it couldn't be undone.

Таким образом, вы должны сделать (заменить master с именем филиала вы находитесь):

git stash save 
git reset --hard 111 
git stash apply 
<do some more changes to commit 111 if needed> 
git commit --amend 
git push gerrit master:refs/for/master 

И вуаля - ваша фиксация 111 была изменена и обновлена ​​с Геррит.

Существует еще один способ сделать это: вы можете использовать git rebase --interactive, но в этом случае я нахожу его более сложным, чем git reset.

+0

Большое вам спасибо, это именно то, что я искал – user3274539

1

Геррит документооборота в вашем случае:

  • Fetch переход от Геррит, используя URL из обзора страница
  • Внесение изменений
  • Добавить изменения в индекс с git add -A .
  • Изменить предыдущий коммит git commit --amend
  • Нажмите поправки фиксации назад к Герриту git push gerrit master:refs/for/master (замените master с вашими и именами удаленных филиалов)
+0

Я сделал некоторые изменения, и я сделал cherryPicked другой фиксации, сделал другие изменения, и теперь я хочу, чтобы они были нажаты на первый коммит прямо перед моим cherrypick, теперь, когда я делаю поправку Im на том, что вишня выбрала команду, к сожалению, – user3274539

+0

вы может сделать это с помощью интерактивной rebase ('git rebase -i HEAD ~ 3'). Затем замените 'pick' на' e' перед фиксацией, которую вы хотите изменить. После того, как вы закончили с изменением, выполните «git rebase -continue», чтобы завершить операцию. –

0

Я рекомендую использовать checkout вместо вишни выбрать изменение/набор патчи от Геррита. Проверка whit не зависит от фиксации. В вашем случае внесение изменений в последнюю модификацию повлияет на последнюю фиксацию, которая является вишневым подборкой - это нормально. Но если вы хотите изменить изменения на 1. commit, тогда просто сначала удалите значок вишни.

Смежные вопросы