Как избавиться от ложных зависимостей в gerrit
Похоже, что при использовании gerrit по умолчанию все изменения зависят от предыдущего. Я не вступаю в ветки для новых изменений, я просто отключаю основную ветвь, а затем нажимаю измененные изменения на удаленный источник/мастер. Зависимость создается каждый раз, даже если оба фиксации не имеют ничего общего друг с другом.
Я столкнулся с несколькими проблемами, которые заставляют меня думать, что я не использую git правильно в сочетании с gerrit.
Что должно произойти по-другому в моем рабочем процессе git/gerrit для каждой фиксации, чтобы он не зависел от предыдущего коммита? Я также попытался создать новую ветку для изменения:
> git pull origin master
> git checkout -b new_branch
> #make a change
> git add -A
> git commit #with gerrit commit hook in .git/hooks
> git push origin <sha1>:refs/for/master
Это работает, но gerrit все еще сообщает о зависимости от ранее зафиксированного элемента.
Ответы
Ответ 1
Это то, что Gerrit
означает по зависимостям - коммит, который находится поверх другого фиксации. Если оба находятся в процессе обзора, то новый зависит от более старого.
Если вы не хотите, чтобы они зависели друг от друга, не создавайте коммиты друг на друга. Создайте один коммит, а затем создайте новую ветку на основе мастера для следующей фиксации
(git checkout origin/master -b NEW_BRANCH_NAME)
.
Когда вы нажимаете вторую фиксацию для проверки, она будет опубликована и она не будет зависеть.
Ответ 2
Мне научили обойти это, выполнив git reset --hard HEAD~1
после каждого git push
.
Ответ 3
В качестве варианта git reset --hard HEAD~1
я использую это вместо:
git reset --hard origin/master
Предполагая, что я работаю в master
для быстрого изменения.
В противном случае очень важно работать в ветке темы.
Существует много сценариев Git, которые помогают управлять ветками тем:
Я уверен, что есть и другие.