Как сохранить только изменения головы в git rebase

Я сейчас в середине длительный перебазировать пройдя через десяток коммитов. Я структурировал вещи в своем процессе разработки так, что только изменения от HEAD Это то, что я хочу сохранить-все остальные конфликты (например, commit hash b06a1dd) следует исключить.

есть ли способ, чтобы просто удалить все изменения, связанные с >>>>>>> b06a1dd и сохраните изменения, которые git будет помечать <<<<<<< HEAD одним махом, поэтому мне не нужно продолжать печатать git rebase --continue, дело с больше конфликтов больше совершайте хэши, и только держите HEAD изменения?

2 ответов


если вы готовы начать перебазирование (git rebase --abort), тогда это должно сделать то, что вам нужно:

git rebase -X ours upstream

здесь upstream - это ветвь, на которую вы перебазируетесь.

как отметил в ответ и в других местах,ours и theirs метки немного более запутанны для перебазирования, чем для слияния. После начала перебазироваться, git создает анонимную ветку и начинает применять совершает его. С ours означает "сохранить изменения из текущего ветвь", что текущая ветвь будет HEAD, которая содержит upstream и любые изменения, уже примененные rebase.


для полноты, это то, что я узнаю из предыдущего ответа и комментариев в текущем Q&A (кредит идет их авторам):

  • если вы готовы начать все сначала и выберите ту же сторону для всех коммитов, текущий выбранный ответ git rebase --abort а то git rebase -X ours upstream может сделать трюк.
  • но я думаю, на практике вы не захотите слепо использовать либо ours или theirs не заглядывая в каждый совершает. Вы бы хочу примите индивидуальное решение для каждого коммита, когда "в середине длинного rebase". Итак, ваши фактические варианты будут:

    1. использовать апстрим:

      git checkout --ours path/to/a/specific/file
      git add path/to/a/specific/file
      

      или еще лучше, в этом случае вы просто используете этот:

      git reset HEAD path/to/a/specific/file
      
    2. используйте свою ветку функций:

      git checkout --theirs path/to/a/specific/file
      
    3. или сделайте это вручную, чтобы обратиться к каждому <<<< ... ==== ... >>>> в вашей редактор.

PS:на ours и theirs имеют особое значение при выполнении rebase.