Применимо для Eclipse Luna + Eclipse Git 3.6.1
Я,
- клонированный репозиторий git
- внес некоторые изменения в исходный код
- поэтапные изменения из Git Staging View
- наконец, зафиксируйте и нажмите!
И я столкнулся с этой проблемой с EGit, и вот как я ее исправил ...
Да, кто-то зафиксировал изменения, прежде чем я зафиксирую свои изменения. Так что изменения отклонены. После этой ошибки изменения фактически фиксируются в локальном репозитории. Я не хотел просто Pull
вносить изменения, потому что хотел сохранить, linear history
как указано в - В каких случаях `git pull` может быть вредным?
Итак, я выполнил следующие шаги
- с точки зрения репозитория Git щелкните правой кнопкой мыши соответствующий
проект Git
- select
Fetch from Upstream
- извлекает удаленные обновления (ссылки и объекты), но локальные обновления не производятся. для получения дополнительной информации см. В чем разница между «git pull» и «git fetch»?
- select
Rebase...
- это открывает всплывающее окно, нажмите, чтобы Preserve merges during rebase
узнать, почему.
Что именно делает git "rebase --preserve-merges" (и почему?)
- нажмите на
Rebase button
- если есть / есть
conflict(s)
, переходите к шагу 6, иначе шагу 11
- появится
Rebase Result
всплывающее окно, просто нажмите наOK
file comparator
откроется, нужно доработать left side file
.
- как только вы закончите слияние изменений правильно, перейдите к
Git Staging
просмотру
stage the changes
. т.е.add to index
- в том же виде щелкните
Rebase
-> Continue
. повторите от 7 до 10, пока все конфликты не будут разрешены.
- в
History
представлении выберите строку фиксации и выберитеPush Commit
- установите
Rebase Commits of local.......
флажок и нажмите «Далее». см. почему - Git: переустановить на ветку разработки из апстрима
- нажмите на
Finish
Примечание: если у вас есть несколько коммитов локального репозитория, вам нужно сжать их за один коммит, чтобы избежать множественных слияний.