2014-01-19 2 views
2

У меня проблема с редактированием.редактирование фиксируется с git rebase

У меня есть 2 фиксации для 2 .php файлов. Моя цель - отредактировать их обоих. Я читал о rebase -i и это то, что я считаю, должен быть сделано:

  • первым меняет pick в edit;
  • сохранить и выйти;
  • rebase останавливается;
  • тип git commit --amend;
  • вносить изменения, сохранять и закрывать текстовый редактор;
  • тип git rebase --continue.

После этого я считаю, что rebase останавливается снова, и я должен сделать это снова для второй фиксации.

Но сразу после того, как я печатаю git rebase --continue я получаю это:

file1.php: needs update 
You must edit all merge conflicts and then 
mark them as resolved using git add 

В чем проблема и что мне делать?

+0

Да, это только две фиксации за всю историю. Что касается второго вопроса, когда я открываю файл, он говорит: «Файл изменен на диске. Вы хотите перезагрузить файл. Предполагается ли это? – EmptyClip

+0

Можно ли выкачать две коммиты в одну и отредактировать ее? – Agis

+0

Нет. Мне нужно изменить оба файла. – EmptyClip

ответ

4

При остановке для перебазирования вы должны:

  • редактировать файл (ы)
  • добавить изменения в индекс - git add changedFile
  • внести поправки изменения - git commit --amend
  • продолжают перебазирования - git rebase --continue

Из вашего описания возможно, что вы забыли добавьте изменения в индекс. В этом случае git commit --amend ничего не делает (изменений не требуется). Кроме того, у вас есть git commit --amend, прежде чем редактировать файл, который также является неправильным (вы должны внести изменения в уже внесенные изменения в файл).

Попробуйте применить шаги в том порядке, который я дал.

+0

Я попробовал. Я изменил файл, сделал «git add», сделал «-amend» и «-continue». Тогда я получил эту ошибку: не смог применить 21e61c9 ... second commit. Git затем ссылается на меня - Continue, --skip и --abort команд. – EmptyClip

+0

Эта ошибка возникает, когда ваши изменения конфликтуют с первоначальными изменениями в следующих записях. Вызовите 'git status', чтобы посмотреть, как это выглядит. Обратите внимание на строку с 'both modified'. –

+0

# HEAD отсоединен от 7deb658 # Вы в настоящее время перезагружаете ветку 'master' на '7deb658'. # (исправить конфликты, а затем запустить «git rebase -continue») # (используйте «git rebase -skip», чтобы пропустить этот патч) # (используйте «git rebase --abort», чтобы проверить исходную ветку) # # неслиянных путь: # (использование "мерзавец сброс ГОЛОВА ...", чтобы убрать из буфера) # (использование "мерзавец добавить ...", чтобы отметить разрешение) # # \t как изменение: шоу-Dir -content.php – EmptyClip

1

(Отправлено решение от имени ОП).

Я получил правильный способ сделать это:

git rebase -i --root (I wasn't able to find both commits using HEAD~2) 
pick->edit for both commits 
Ctrl+X and Y and ENTER 
edit the first commit 
git add file1.php 
git commit --amend 
git rebase --continue 
edit the second commit 
git add file2.php 
git commit --amend 
git rebase --continue 
git push -f 

Надеется, что это помогает, по крайней мере один человеку, начиная свой опыт GIT. Шпак, ты очень помог. Благодарю.