Git Push to remote отклонен из-за отказа от изменения

Я столкнулся с этой проблемой в Gerrit, Git.

  1. Я внес изменения (ветвь ONE) и нажал на gerrit (скажем, изменить Id-240) из eclipse. Но не слились.
  2. Затем я создал еще одну ветку (ветвь-ДВА) и зафиксировал изменения, не изменяя предыдущую фиксацию. Так что получил новый gerrit change Id (скажем, change id-241).
  3. Далее я отказался от changeId 240.
  4. Теперь, когда я пытаюсь отправить свои изменения из ветки TWO, он говорит, что удаленное управление отклонено, поскольку оно пытается отправить изменение с идентификатором 240 вместо 241. Почему?

Что я пробовал --

Прочитав в Интернете возможные решения, я сделал ЖЕСТКИЙ сброс, и мои изменения changeId-241 исчезли. Хотя я получил его обратно из reflog. Но момент, когда я пытаюсь проверить ветку-ONE (сделать HARD Reset), мои изменения changeId-241 исчезают.

Я пытаюсь следовать этому - Ожидание слияния Git из-за заброшенной фиксации < /а>


person Shwet    schedule 01.08.2018    source источник


Ответы (2)


Невозможно точно знать, что вы сделали, но, похоже, у вас есть что-то вроде этого:

BASE --- COMMIT-1              <= branch-1
                \
                 \--- COMMIT-2 <= branch-2

COMMIT-2 в ветке-2 зависит от COMMIT-1 в ветке-1, поэтому, когда вы автоматически нажимаете COMMIT-2 для Gerrit, вы также нажимаете COMMIT-1. Gerrit отклонит COMMIT-1, потому что изменение 240 отменено.

Вместо этого вы должны были работать параллельно, например:

BASE --- COMMIT-1 <= branch-1
   \
    \--- COMMIT-2 <= branch-2

Таким образом, COMMIT-2 не будет зависеть от COMMIT-1, поэтому вы сможете изменять коммиты по мере необходимости и отправлять/отказываться от их изменений в Gerrit по своему усмотрению.

person Marcelo Ávila de Oliveira    schedule 01.08.2018

Если вы хотите отправить оба изменения для проверки, то либо восстановите заброшенное изменение и попробуйте отправить его снова, либо с помощью команды rebase с интерактивной опцией (git rebase -i HEAD~2) обновите сообщение фиксации заброшенного изменения, удалите " Change ID» из сообщения фиксации, чтобы gerrit не пытался загрузить новый набор исправлений в заброшенное изменение, а загрузил новое изменение.

Если вы хотите загрузить только последнюю фиксацию, то с помощью той же команды rebase удалите заброшенное изменение из локального репо.

git rebase -i HEAD~2
person mrutyunjay    schedule 01.08.2018