Частые вопросы по Git

Частые вопросы по Git

Здесь я собрал вопросы связанные с гитом и ответы на них.

Я добавляю те вопросы, с которыми сталкиваюсь сам, поэтому список будет постоянно пополняться или сделаю следующую часть.

Исчерпывающих ответов на вопросы, а так же подробных описаний гит команд тут не будет, но будет ясно в каком направлении гуглить.

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

Для этого используем команду git reset, ее можно применить в двух вариациях.

Первый вариант отменяет все изменения:

git reset --hard HEAD~1

Второй вариант, если нужно сохранить всё, что вы сделали, но еще не успели закоммититье:

git reset --soft HEAD~1

HEAD~1 означает один коммит до HEAD, т.е. до текущего положения.

Отличия между «git pull» и «git fetch»?

git pull — это, по сути, git fetch, после которого сразу же следует git merge.

git fetch получает изменения с сервера и сохраняет их в refs/remotes/. Это никак не влияет на локальные ветки и текущие изменения. А git pull вливает все эти изменения в локальную копию.

Как отменить «git add» до коммита?

Если вы выполнили git add для какого либо файла по ошбике и хотите это отменить, то выполните команду:

git reset имя_файла

Это поможет вслучае того, если коммит еще не был сделан

Как переименовать локальную ветку?

Это можно сделать командой:

git branch -m oldname newname

Как добавить пустую папку в репозиторий?

Такая возможность гитом не поддерживается, но можно схитрить. Для того чтобы гит заметил пустую папку нужно создать в ней пустой (0 байт) файл с именем .gitkeep (имя может быть любое).

Сохранить исходники в архив

Можно экспортировать все исходники из репозитория командой git archive, например:

git archive --format zip --output /folder/source.zip master

Отменить все изменения, кроме тех, что уже добавлены в планируемый коммит

Сделать это можно командой

git checkout -- .

Как восстановить удалённый файл?

Чтобы восстановить удаленный файл, для начала необходимо найти последний коммит, где этот файл ещё существует. Сделать это можно командой:

git rev-list -n 1 HEAD -- file_name

Дальше восстанавливаем файл:

git checkout тут_найденный_коммит^ -- file_name

Я добавляю в .gitignore файлы, а их все равно отслеживает?

Скорее всего эти файлы уже были в индексе, команда:

git rm --cached

позволяет убрать файлы из индекса, соответственно .gitignore на них подействует.

Хостинг для ваших проектов

Возможно, вас заинтересует

Шпаргалка по PostgreSQL

Сделал для себя небольшую шпаргалку по Postrgess. Пока это очень короткая версия …

Шпаргалка по командам Docker

При работе с Docker основные команды типа docker run, docker build и …