Слава Україні!

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

Команды для работы с Git
3-го серпня 2015, 16:34

Добавление удаленного репозитория

Чтобы добавить новый удаленный репозиторий, используйте команду git remote add на терминале в каталоге, в котором хранится ваш репозиторий. Команда git remote add принимает два аргумента:

  • Удаленное имя, например origin
  • Удаленный URL, например https://github.com/user/repo.git.
Например:

# Установить новый удаленный репозиторий
$ git remote add origin https://github.com/user/repo.git
# Проверить удаленный репозиторий
$ git remote -v

> origin https://github.com/user/repo.git (fetch)
> origin https://github.com/user/repo.git (push)
 
Ошибка в комментарии к коммиту

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

git commit --amend

Отменить последний коммит

Можно использовать git reset, вот так:

git reset --hard HEAD~1

HEAD~1 означает один коммит до HEAD, т.е. до текущего положения. Стоит заметить, что это «ядерный» способ, который отменит все изменения. Если вам нужно сохранить всё, что вы сделали, но еще не успели закоммитить, используйте:

git reset --soft HEAD~1

Удалить ветку на сервере

git push origin --delete имя_ветки

Различия между «git pull» и «git fetch»

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

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

Вы выполнили git add имя_файла случайно и хотите отменить добавление файла. Если коммит ещё не был сделан, то поможет:

git reset имя_файла

Как разрешать конфликты слияния?

Используйте программу git mergetool, которая предоставляет удобный интерфейс для разрешения конфликтов.

Удалить все локальные файлы и директории, которые не отслеживает Git, из текущей копии

Осторожно! Лучше сделайте перед этим бэкап.

git clean -f -d

Клонировать все ветки с сервера

git clone https://github.com/user/repo.git

Но скорее всего, вы это уже сделали, а ветки просто скрыты. Вот команда, чтобы показать их:

git branch -a

Можно использовать git checkout origin/имя_ветки, чтобы посмотреть на нужную ветку. Или git checkout -b имя_ветки origin/имя_ветки, чтобы создать локальную ветку, соответствующую удалённой.

Переименовать локальную ветку

git branch -m oldname newname

Вернуться к любому коммиту

Можно использовать git reset, как показано ранее. Это будет означать, что вы хотите навсегда вернуться к тому состоянию, в котором вы были, а не просто посмотреть на него (для этого надо сделать checkout). Идентификатор коммита должен быть такой, какой прописан в выводе команды git log.

git reset --hard идентификатор_коммита

Ещё раз повторим: команда отменит все текущие изменения, так что убедитесь, что вам это действительно нужно. Или используйте --soft вместо --hard.

Удалить подмодуль (submodule)

Создание подмодулей используется довольно редко, но иногда они всё-таки встречаются. Вот, что вам нужно:


git submodule deinit submodulename
git rm submodulename
git rm --cached submodulename
rm -rf .git/modules/submodulename

Перезаписать локальные файлы во время git pull

Вам снова поможет git reset:


git fetch --all
git reset --hard origin/master

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

Никак! Такая возможность просто не поддерживается, т.к. считается, что вам это не нужно. Но есть один трюк. Можно создать файл .gitignore в нужной директории со следующим содержимым:

 # Игнорируем всё в этой директории
*
# Кроме самого файла .gitignore
!.gitignore

Экспортирование исходников аналогично «svn export»

Используйте git archive, например, так:

git archive --format zip --output /путь/к/файлу/файл.zip master

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

git checkout -- .

Создать новую ветку на сервере из текущей локальной ветки


git config --global push.default current
git push -u

Восстановить удалённый файл

Сначала нужно найти последний коммит, где файл ещё существует:

git rev-list -n 1 HEAD -- имя_файла

Потом восстановить этот файл:

git checkout найденный_коммит^ -- имя_файла

Вернуть один конкретный файл в состояние, в котором он был в каком-либо коммите

Почти как в прошлом примере, только чуть проще:

git checkout идентификатор_коммита имя_файла

Сделать так, чтобы Git игнорировал изменения прав файлов

git config core.fileMode false

Заставить Git помнить пароль при работе с https

Для запоминания на 15 минут:

git config --global credential.helper cache

Можно настроить и более долгий период:

git config --global credential.helper "cache --timeout=XXXX"

Удалить файл из репозитария

git rm имя_файла

Осторожно! Файл так же будет удален с диска. Чтобы удалить файл из репозитария, но оставить на диске:

git rm --cached имя_файла

Важлива інформація

Міністерство оборони
України
з 24.02 по 07.02
втрати противника
орієнтовно склали:
846650 ( +1340 ) особового складу
9975 ( +10 ) танків
20755 ( +18 ) бойових бронемашин
22785 ( +32 ) артилерійських систем
1271 ( +0 ) РСЗВ
1056 ( +1 ) засоби ППО
369 ( +0 ) літаків
331 ( +0 ) гелікоптерів
36307 ( +96 ) автомобільної техніки
28 ( +0 ) кораблі / катери
3054 ( +0 ) крилаті ракети
24301 ( +116 ) БПЛА
3738 ( +1 ) спец. техніки
4 ( +0 ) установок ОТРК/ТРК
1 ( +0 ) підводні човни