Git: Как получить последнюю версию моего кода?

Я использую 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'.

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

Ответ 1

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

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

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

Ответ 2

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

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

    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' для возврата к предыдущей фиксации?

Ответ 3

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

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

git stash  
git pull

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Если все остальное не удается, и если вы (вполне понятно) боитесь "reset", то проще всего клонировать происхождение в новый каталог и уничтожать старый.

Ответ 7

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

git describe --abbrev=0 --tags

Ответ 8

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

Ответ 9

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

cd /go/to/path
git pull origin master