Я получаю это сообщение, переходя в репозиторий 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
- на том же экране, нажмите
Rebase
→Continue
. повторяйте 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 вызывает мои изменения в главной ветке.