git: Как мне получить последнюю версию моего кода? - PullRequest
182 голосов
/ 14 июня 2011

Я использую Git 1.7.4.1.Я хочу получить последнюю версию своего кода из репозитория, но я получаю ошибки ...

$ git pull
….
M   selenium/ant/build.properties
….
M   selenium/scripts/linux/get_latest_updates.sh
M   selenium/scripts/windows/start-selenium.bat
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution, or use 'git commit -a'.

Я удалил локальные копии файлов, на которые жалуется инструмент, но явсе равно получите ошибки.Как проверить последнюю версию из удаленного репо?- Дэйв

Ответы [ 9 ]

240 голосов
/ 14 июня 2011

Если вас не волнуют какие-либо локальные изменения (включая неотслеживаемые или созданные файлы или вложенные репозитории, которые просто оказались здесь), и вы просто хотите получить копию из репозитория:

git reset --hard HEAD
git clean -xffd
git pull

Опять же, этоУничтожьте любые изменения, которые вы сделали локально, поэтому используйте их осторожно.При этом подумайте о rm -Rf.

202 голосов
/ 20 октября 2014

Случай 1: не заботятся о локальных изменениях

  • Решение 1. Получите последний код и сбросьте код

    git fetch origin
    git reset --hard origin/[tag/branch/commit-id usually: master]
    
  • Решение 2. Удалите папку и снова клонируйте: D

    rm -rf [project_folder]
    git clone [remote_repo]
    

Случай 2: Забота о локальных изменениях

  • Решение 1: нет конфликтов с новой онлайн-версией

    git fetch origin
    git status
    

    сообщит что-то вроде:

    Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
    

    Тогда получите последнюю версию

    git pull
    
  • Решение 2: конфликты с новой онлайн-версией

    git fetch origin
    git status
    

    сообщит что-то вроде:

    error: Your local changes to the following files would be overwritten by merge:
        file_name
    Please, commit your changes or stash them before you can merge.
    Aborting
    

    Подтвердите свои локальные изменения

    git add .
    git commit -m ‘Commit msg’
    

    Попробуйте получить изменения (не получится)

    git pull
    

    сообщит что-то вроде:

    Pull is not possible because you have unmerged files.
    Please, fix them up in the work tree, and then use 'git add/rm <file>'
    as appropriate to mark resolution, or use 'git commit -a'.
    

    Откройте файл конфликта и исправьте конфликт. Тогда:

    git add .
    git commit -m ‘Fix conflicts’
    git pull
    

    сообщит что-то вроде:

    Already up-to-date.
    

Дополнительная информация: Как мне использовать 'git reset --hard HEAD', чтобы вернуться к предыдущему коммиту?

17 голосов
/ 10 января 2013

Я подозреваю, что, возможно, произошло то, что вы удалили файлы, которые вы изменили (потому что вы не заботились об этих изменениях), и теперь git воспринимает удаление как изменение.

Здесьэто подход, который перемещает ваши изменения из вашей рабочей копии в «тайник» (извлекаемый, если на самом деле окажется, что они вам когда-нибудь понадобятся снова), так что вы можете затем извлечь последние изменения из апстрима.

git stash  
git pull

Если вы когда-нибудь захотите получить свои файлы (потенциальные конфликты с изменениями в исходном коде и т. Д.), Запустите git stash apply, чтобы поместить эти изменения поверх вашего кода.Таким образом, у вас есть подход «отменить».

7 голосов
/ 14 июня 2011

Сначала вы должны объединить свои файлы. Выполните команду git status, чтобы увидеть, какие файлы необходимо объединить (это означает, что сначала вам нужно разрешить конфликты). Как только это будет сделано, выполните git add file_merged и снова выполните pull.

3 голосов
/ 09 декабря 2017

попробуйте этот код

cd /go/to/path
git pull origin master
2 голосов
/ 14 июня 2011

Если вы просто хотите выбросить все в своей рабочей папке (например, результаты неудачного или прерванного слияния) и вернуться к чистой предыдущей фиксации, выполните git reset --hard.

1 голос
/ 06 апреля 2017

Запустив эту команду, вы получите самый последний тег, который обычно является версией вашего проекта:

git describe --abbrev=0 --tags
1 голос
/ 14 июня 2011

Я понимаю, что вы хотите отменить свои локальные изменения и выяснить, что находится на вашем пульте?

Если ничего не помогает, и если вы (вполне понятно) боитесь «перезагрузки», самое простое - просто клонировать источник в новый каталог и удалить старый.

0 голосов
/ 14 июня 2011

Мне кажется, у вас проблемы с core.autocrlf.core.autocrlf = true может создать проблемы, подобные тем, которые вы описываете в Windows, если в репозиторий были добавлены новые строки CRLF.Попробуйте отключить core.autocrlf для репозитория и выполнить полную перезагрузку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...