Как исправить проблемы в интерактивной перебазировке Git

0

Вопрос

Я пытаюсь перебазировать свою локальную ветвь против главной ветви. Из моей локальной ветви я выполнил приведенную ниже команду для перебазирования. Я практиковался в использовании утилиты командной строки (т. е. Git Bash) в течение некоторого времени и хотел бы использовать ее для устранения текущей проблемы.

Я могу использовать инструмент кода Visual Studio для принятия текущих / входящих / обоих изменений.. Но есть ли способ выполнить то же самое с помощью Git Bash? Также для приведенного ниже сценария, каков был бы предпочтительный способ исправления?

> git pull --rebase origin master
> git status                                                                                                                                             
interactive rebase in progress; onto 53681c8
Last commands done (2 commands done):
   pick 89bb0987 Updated messenger.xml
   pick 990bn189 Updated messenger.xml
Next commands to do (9 remaining commands):
   pick 6780f98 Updated messenger.xml
   pick 9091m969 Updated updated_numbers.xml
  (use "git rebase --edit-todo" to view and edit)
You are currently rebasing branch 'feature-jd-bulk-messenger' on '53681c8'.
  (fix conflicts and then run "git rebase --continue")
  (use "git rebase --skip" to skip this patch)
  (use "git rebase --abort" to check out the original branch)

Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
        both modified:   jd-test/admin/messenger.xml
git
2021-11-24 05:14:19
1

Лучший ответ

0

Это просто обычный конфликт слияния, изменения в вашей локальной ветке совпадают или перекрывают изменения в истории магистрали, и вам нужно решить, как должен выглядеть результат, потому что Git справедливо не осмеливается угадать.

есть ли способ выполнить то же самое с помощью Git Bash?

Да, решите, что jd-test/admin/messenger.xml должно выглядеть так, добавьте это и git rebase --continue, какой бы инструмент слияния вам ни понравился, он должен быть в состоянии автоматизировать последовательность редактирования/выбора/этапа для вас. Я использую vimdiff, который с апломбом справляется с этим, разве интеграция Git VS Code не понимает, что здесь происходит?

Для примера,

git init `mktemp -d`; cd $_
seq 5 >file; git add .; git commit -m-
git branch -t mine
sed 2s,$,a, -i file; git commit -am2
git checkout mine
sed 3s,$,a, -i file; git commit -am3
git rebase

и у вас возникнет конфликт в file, где правильный результат-принять обе измененные строки как есть, но Git не может быть достаточно уверен в этом, чтобы просто сделать это за вас. git status здесь появится знакомое сообщение, я могу понять его, поняв, что перебазировка теперь фактически интерактивная, она ждет меня, она взаимодействует со мной. Я бы сделал git mergetool здесь.

Если вы собираетесь делать много этого, вы можете захотеть включить повторное использование повторно подключенных решений re: git config rerere.enabled true; git rerere прежде чем добавлять разрешение в этот первый раз, после этого Git запустит его для вас, запустив его, Git запомнит новые конфликты и разрешения в индексе на случай, если они снова появятся при последующих перебазировках.

2021-11-24 06:46:20

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................