Как загрузить последний коммит git
Перейти к содержимому

Как загрузить последний коммит git

  • автор:

Как загрузить последнюю версию проекта с сервера с помощью git?

На локалке есть версия проекта, где что-то пошло не так. Все зашло настолько далеко, что проще загрузить с git последнюю загруженную версию, где все работало.

Как это сделать?

Версию на локалке не коммитила

  • Вопрос задан более трёх лет назад
  • 13294 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 3

Bringoff

Android dev at Freelance

Версию на локалке не коммитила

Ну, если не коммитили, то достаточно должно быть сделать git reset —hard HEAD . Только осторожно с этой коммандой, она реально сносит все изменения после последнего коммита.

Ответ написан более трёх лет назад
Нравится 1 2 комментария

nastya_zholudeva

nastya_zholudeva @nastya_zholudeva Автор вопроса

Артем Калачян, я правильно понимаю, что после этой команды версия на локалке и версия на сервере будут одинаковые (как на сервере)?

P.S. переспрашиваю, потому как боюсь делов натворить))

youngmysteriouslight @youngmysteriouslight
nastya_zholudeva, судя по формулировке вопроса

Все зашло настолько далеко, что проще загрузить с git последнюю загруженную версию, где все работало.

Вас интересует следующее:
Как привести рабочую директорию к состоянию, в котором всё работало.
Ответ на этот вопрос дан выше: git reset —hard .
HEAD — последний коммит, можно написать хеш более раннего коммита (см. git log)
К слову, для этого иметь подключение к серверу не обязательно, для таких задач git исходно и создавался.

Если же необходимо получить актуальную версию с сервера, то git pull.

mshak

Git stash — сохранить изменения в заначку, и переместить голову на последний комитета;
Git pull — получить последний комит
Дальше на выбор:
Либо git stash pop — натянуть спрятанные изменения на полученную версию
Либо git stash clear — очистить заначку

Ну или ресетнуть изменения

Ответ написан более трёх лет назад

nastya_zholudeva

nastya_zholudeva @nastya_zholudeva Автор вопроса
mshak, а в чем разница будет между stash -> pull -> stash clear и reset —hard HEAD?

mshak

Stash вам даст время ещё подумать, «а нужны ли мои изменения».

После reset вам все равно делать git pull, что бы получить последнюю версию с сервера

Переписывание истории

В данном обучающем материале описаны различные способы перезаписи и изменения истории в Git. В Git используются несколько способов регистрации изменений. Мы обсудим плюсы и минусы различных способов и покажем примеры работы с ними. В данном обучающем материале описаны некоторые типовые причины перезаписи состояний кода и разъясняется, как избегать ошибок при таких операциях.

Основная задача Git — гарантировать, что вы не потеряете внесенные изменений. Но эта система также предназначена для предоставления вам полного контроля над процессом разработки. В числе прочего вы сами определяете то, как выглядит история вашего проекта. Такая свобода создает и вероятность потери коммитов. Git предоставляет команды для перезаписи истории, но предупреждает, что использование таких команд может привести к потере данных.

В Git существует несколько механизмов хранения истории и сохранения изменений. Вот эти механизмы: commit —amend , git rebase и git reflog . Это мощные инструменты для настройки рабочего процесса. По окончании этого обучающего материала вы будете знать команды, которые позволят реструктурировать коммиты Git, и сможете избегать проблем, с которыми приходится сталкиваться при перезаписи истории.

Как перейти на последний коммит в ветке?

Какой командой через консоль можно обновить текущие версии файлов в ветке до последнего коммита?
Документация предлагает использовать команду git pull — скачать все изменения из обновить файлы до последней версии.
Но проблема в том, что я использую jgit — это скрипт для Solaris (официальных пакетов для git нет), а в нем нет такой команды.
Есть команда fetch — но это только для скачивания из удаленного репозитория изменений.
Есть команда reset —hard — но для этого нужно знать хэш последнего коммита.
Какие ещё есть команды в git, кроме pull?

  • Вопрос задан более трёх лет назад
  • 14897 просмотров

Комментировать

Решения вопроса 1

git fetch git checkout git merge origin/

Ответ написан более трёх лет назад

mewforest / Git help.md

Примечание: русский язык может не поддерживаться в вашем IDE.

git log 

Переключение на коммит с id=»name_of_commit»

git checkout name_of_commit

Переключение обратно на последний коммит

«Скачать», а точнее клонировать проект

git clone https://github.com/. /project.git

Часто пока вы работаете над одной частью вашего проекта и всё находится в беспорядке, у вас возникает желание сменить ветку и поработать над чем-то ещё. Сложность при этом заключается в том, что вы не хотите фиксировать наполовину сделанную работу только для того, чтобы иметь возможность вернуться к ней позже. Справиться с ней помогает команда git stash. Source

Скрыть незакоммиченные изменения

Можно также добавить сообщение с помощью save -параметра:

git stash save «Ok here it is»

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

Вернуть последнее скрытое изменение

git stash apply

Вернуть скрытое изменение под номером

git stash apply stash@

Отменить отслеживание закоммиченного файла

git rm —cached another-file.txt

Удалить файл из репозитория, ен удаляя с диска

git rm —cached file.txt

Например, вот так можно удалить папку с конфигурацией проекта PyCharm (IDEA): git rm —cached -r .idea

Как перестать каждый раз вводить логин/пароль от Github?

Не только Github, но и любого другого удаленного git-сервера. Вопрос решает авторизация с помощью генерации SSH-ключа на компьютере разработчика. Вначале проверьте, установлен ли у вас SSH-клиент (Windows 10 со сборки 1809, Ubuntu, OS X, etc

  • все имеют предустановленный клиент):
ssh -V 

Если есть, то отлично, генерируем ключ (вместо ed25519 можно выбрать другие алгоритмы шифрования ключа):

ssh-keygen -t ed25519 

На все вопросы можете ответить Enter. Но моя рекомендация, когда будет запрос «Enter passphrase (empty for no passphrase)», ввести кодовую фразу для ключа. Да, каждый push/pull/fetch придется её вводить, но зато если вдруг кто-то украдёт приватную часть ключа, он не сможет без неё получить доступ ко всем вашим удаленным репозиториям. Да, вам не послышалось, ключ разделён на две части: приватная (private key) и публичная (private key). Как следует из названия, приватную никому передавать нельзя, жди беды, а вот публичную как раз и стоит загрузить на удаленный сервер с репозиториями, в твоём случае это, скорей всего github.com.

Последний этап: загрузить свой public key на сервер и поменять у локального сервера способ авторизации с HTTP на SSH.

Github: Клик по аватару / Settings / SSH and GPG keys / New SSH key. Расположение ключа смотрите в консоли, оно там уже распечаталось. Далее переходим в ваш репозиторий на Github и клацаем по большой зеленой кнопке «Code», после чего выбраем SSH, копируем ссылку и вводим ее в консоль проекта:

git remote set-url origin git@github. /project.git 

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

За основу взят код отсюда.

git fetch git merge 

Если возникнет необходимость ручного слияния, то выскочит что-то вроже:

Auto-merging tests/test_1.py CONFLICT (content): Merge conflict in tests/test_1.py Auto-merging tests/test_2.py 

В примере выше test_2.py прощел автоматическое слияние, а test_1.py нет. Для того, чтобы это исправить, нужно открыть конфликтующий файл и решить, какую строку оставить и закоммитить проект:

>>>>>> master 

Добавление других проектов, как подмодулей

Допустим, в своем проекте вы используете другой свой (или чужой, почему нет) репозиторий, вот вы его склонировали, но что дальше? Конечно, можно просто удалить папку .git у только что склонированного подпроекта и дело с концом, но тогда не будет синхронизации с оригинальным репозиторием и все изменения придется применять руками. Это не очень удобно, лучше пометьте эту папку как подмодуль:

git submodule add git@github.com/. /blablabla.git blablabla 

Отлично! Теперь пушьте и забудьте о варварстве с удалением .git .

  • Скорая помощь для тех, кто накосячил и потерял данные — Ё**ный Git. (цензурная версия)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *