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