Подтвердить что ты не робот

После устранения конфликтов git все еще жалуется?

Я обычно rebase, когда я втягиваю изменения в своих товарищей по команде, и часто имею время конфликтов:

...
CONFLICT (content): Merge conflict in app/views/search/index.html.erb
Auto-merging public/stylesheets/application.css
CONFLICT (content): Merge conflict in public/stylesheets/application.css
Failed to merge in the changes.
Patch failed at 0001 organizing

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".

Итак, после открытия каждого файла с конфликтом, исправляя его, фиксируя фиксированные файлы:

~/Projects/myApp[956f6e1...]% git rebase --continue
You must edit all merge conflicts and then
mark them as resolved using git add

Я все равно получаю ту же ошибку...

~/Projects/myApp[64b3779...]% git rebase --continue                         
Applying: organizing
No changes - did you forget to use 'git add'?

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".

У меня вроде бы всегда была эта проблема, но я, наверное, никогда не выбрал ее, я всегда буду лениться и git rebase --skip.

Как я могу правильно разрешить конфликт?

4b9b3361

Ответ 1

Итак, после открытия каждого файла с конфликтом, исправляя его, фиксируя фиксированные файлы...

Проблема заключается в том, что вы не должны commit исправления. Если a.txt имеет конфликт слиянием, тогда ваш журнал оболочки должен выглядеть так:

$ vim a.txt # fix conflict
$ git add a.txt
$ # no commit between add and rebase!
$ git rebase --continue

Вызов git rebase --continue позаботится о самом коммите.

Я не уверен, как "вернуться" до вашего фиксации, когда вы находитесь в середине перестановки. git reset --hard HEAD, вероятно, будет делать трюк, но лично я бы чувствовал себя безопаснее, просто направляясь прямо к git rebase --abort и начинаю сначала без фиксации посередине.

Ответ 2

Я согласен с Марком Рушаковым, что фиксация фиксации не должна включать их.

Существует, по крайней мере, еще один способ, что git будет продолжать говорить, что "вы должны отредактировать все конфликты слияния, а затем пометить их как разрешенные с помощью git add" даже после того, как вы это сделали. Это может произойти, если вы удаляете файлы из git управления версиями, но оставьте файл без преобразования в рабочем дереве, а затем попытайтесь выполнить rebase.

Я смог решить эту проблему следующим образом:

  • Завершить rebase с помощью git rebase --abort
  • Определите оскорбительный файл, посмотрев git status
  • Я перевел мои файлы без вершин в мой каталог tmp
  • Повторить rebase - в моем случае git svn rebase
  • Если вы хотите, чтобы файл с неверсированным файлом зависал, переместите его туда, где вы хотите (я оставил свой файл в моем каталоге tmp).

Надеюсь, что это поможет.

Ответ 3

Когда это случилось со мной, мне удалось решить эту проблему после того, как я понял (и добавил к индексу) во время rebase файл, в котором не имеет конфликта. Я предположил, что это может быть неправильно. Поэтому я использовал git checkout -- <filename-with-no-conflict>, а затем git rebase --continue, и он работал.

Ответ 4

С Git 2.14 (Q3 2017) такого совета, заданного в риторическом вопросе, который не требует ответа (например, "did you forget to use 'git add'?" ), больше не будет.

См. commit 6963893, совершить 9932242, commit 6c48686 (11 мая 2017 г.) Жан-Ноэль Авила (jnavila).
(Слияние Junio ​​C Hamano - gitster - в совершить e638108, 29 мая 2017 года)

удобство использования: не задавайте вопросов, если не требуется ответ

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

    git: 'stahs' is not a git command. See 'git --help'.
    Did you mean this?

    stash

а затем выйдет.

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

Пользователю не повезло, что это была команда, которую он искал и ответили "да" в командной строке, эффективно запуская yes.

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

Чтобы улучшить общее удобство использования пакета Git, следующее правило был применен:

если предложение

  • появляется в неинтерактивном сеансе
  • печатается последним до выхода
  • - это вопрос, касающийся пользователя ( "вы" )

предложение превращается в утвердительное и предлагает вариант.

В вашем случае "did you forget to use 'git add'?" теперь заменяется на:

Вы должны "git add" каждый файл с разрешенными конфликтами отмечать их как таковые.
Вы можете запустить git rm в файле, чтобы принять "удаленные ими" для него.

Гораздо яснее.

Ответ 5

Я оказался в одной лодке и git rebase --continue не помог. Запуск rm -fr .git/rebase-apply исправил проблему, хотя