Как избавиться от ложных зависимостей в 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, которые помогают управлять ветками тем:

Я уверен, что есть и другие.