Эгит отказался от быстрой перемотки вперед

Я получаю это сообщение, переходя в репозиторий github. Можете ли вы сказать мне шаг за шагом, чтобы исправить это? Я нажал только один раз, и это было успешным. Но когда я обновил проект и попытался нажать вторую фиксацию, он показывает, что "мастер отклонен без перемотки вперед" и не позволяет мне нажать. Пожалуйста, объясните процедуру.

Ответ 1

У меня была такая же проблема, и я смог ее исправить. afk5min был прав, проблема в том, что ветвь, из которой вы вытащили код, с тех пор изменилась в удаленном репозитории. Для стандартных git практик (http://git-scm.com/book/en/Git-Basics-Working-with-Remotes) вам необходимо (сейчас) объединить эти изменения в удаленном репозитории в свои локальные изменения до вы можете совершить. Это имеет смысл, это заставляет вас принимать другие изменения и объединять их в свой код, гарантируя, что ваш код будет продолжать работать с другими изменениями на месте.

В любом случае, на шаги.

  • Настройте "выборку" для извлечения ветки, изначально вытащенной из.

  • Получить удаленную ветвь.

  • Слейте эту удаленную ветвь в локальную ветвь.

  • Зафиксируйте (слияние) в своем локальном репо.

  • Нажмите изменение на дистанционное репо.

Подробнее...

  • В eclipse откройте представление 'Git Репозитории'.

  • Убедитесь, что вы видите локальный репозиторий и видите удаленный репозиторий в качестве подпапки. В моей версии это называется Remotes, а затем я вижу в этом удаленный проект.

  • Ищите зеленую стрелку, указывающую влево, это стрелка "выборки". Щелкните правой кнопкой мыши и выберите "Настроить выборку".

  • Вы должны увидеть URI, убедитесь, что он указывает на удаленный репозиторий.

  • Посмотрите в разделе сопоставлений ref всплывающего окна. Мой был пуст. Это укажет, какие удаленные ссылки вы хотите получить. Нажмите "Добавить".

  • Введите имя ветки, которое необходимо извлечь из удаленного репозитория. Моя была "хозяином" (btw, выпадающее меню было бы здорово!!, пока вы должны ввести его). Продолжайте всплывающее окно, в конце концов нажав "Готово".

  • Нажмите "Сохранить и выбрать". Это приведет к удаленной ссылке.

  • Посмотрите папку "Филиалы" вашего локального репозитория. Теперь вы должны увидеть эту удаленную ветку в удаленной папке. Опять же, я вижу "хозяина".

  • Щелкните правой кнопкой мыши по локальной ветке в папке "Локальный" в разделе "Ветки", которая называется "мастер". Выберите "Объединить", а затем выберите удаленную ветку с именем "origin/master".

  • Обработать слияние.

  • Зафиксируйте любые изменения в локальном репозитории.

  • Нажмите свои изменения в удаленный репозиторий.

  • Пойдите с вкусным напитком, поздравляя себя. Проведите остаток дня.

Ответ 2

Тем временем (пока вы обновляли свой проект) были сделаны другие фиксации в ветке "master". Поэтому сначала вы должны перенести эти изменения, чтобы изменить свои изменения.

Ответ 3

В моем случае я выбрал флажок Force Update при нажатии. Оно работало завораживающе.

Ответ 4

Применимо для Eclipse Luna + Eclipse Git 3.6.1

Я,

  • клонированный репозиторий Git
  • внесли некоторые изменения в исходный код
  • Поэтапные изменения из Git Промежуточный просмотр
  • наконец, совершить и нажать!

И я столкнулся с этой проблемой с EGit, и вот как я ее исправил.

Да, кто-то совершил изменения до того, как я совершу свои изменения. Поэтому изменения отклоняются. После этой ошибки изменения фактически привязаны к локальному репозиторию. Я не хотел просто изменять Pull, потому что я хотел сохранить linear history, как указано в В каких случаях может быть вредно git pull?

Итак, я выполнил следующие шаги

  • из Git Перспектива хранилища, щелкните правой кнопкой мыши на соответствующем Git
    проект
  • select Fetch from Upstream - он извлекает удаленные обновления (refs и objects), но обновления не производятся локально. для получения дополнительной информации см. В чем разница между 'git pull' и 'git fetch'?
  • выберите Rebase... - откройте всплывающее окно, нажмите Preserve merges during rebase, чтобы узнать, почему Что именно делает git 'rebase -preserve-merges " делать (и почему?)
  • нажмите Rebase button
  • если есть/есть conflict(s), перейдите к шагу 6 еще шаг 11
  • Появится всплывающее окно Rebase Result, просто нажмите OK
  • file comparator откроется, вам нужно изменить left side file.
  • как только вы закончите с правильной сменой изменений, перейдите в goo Git Staging view
  • stage the changes. т.е. add to index
  • на том же экране, нажмите RebaseContinue. повторяйте 7 до 10, пока не будут разрешены все конфликты.
  • из History, выберите строку фиксации и выберите Push Commit
  • установите флажок Rebase Commits of local....... и нажмите "Далее". Обратите внимание, почему - Git: rebase на ветку разработки из восходящего потока
  • нажмите Finish

Примечание., если у вас есть несколько локальных репозиториев, вы должны сквоить их в одном коммите, чтобы избежать нескольких слияний.

Ответ 5

Открыть git представление:

1- выберите ваш проект и выберите слияние 2- Выберите дистанционное отслеживание 3- щелкните ОК

Git объединит удаленную ветку с локальным репозиторием

4- затем нажмите

Ответ 6

Я обнаружил, что вы должны быть на последней фиксации git. Итак, вот шаги: 1) убедитесь, что вы не работали над одними и теми же файлами, иначе вы столкнетесь с ошибкой DITY_WORK_TREE. 2) вытащить последние изменения. 3) зафиксировать свои обновления.

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

Ответ 7

  • Перейдите в Github и создайте репо для нового кода.
  • Используйте новый https или ssh url в Eclise, когда вы делаете push файл вверху;

Ответ 8

Эта ошибка означает, что у удаленного репозитория были другие фиксации и он ходил впереди вашего локального ветки.
Я пытаюсь выполнить git pull, а затем нажать git. Если у них нет противоречивых изменений, git pull получает последний код в мою локальную ветвь, сохраняя мои изменения неповрежденными.
Затем нажатие git вызывает мои изменения в главной ветке.