Заметки по командам git после прочтения книги “Git для профессионального программиста”.

  • git status [-s] - текущее состояние [короткая запись]
  • git diff [--staged][--name-only] [branch] - изменения [включая индексированные] [имена файлов] [другие ветки]
  • git add -p - добавлять все изменения в индекс, выбрать e, чтобы ещё сильнее делить изменения
  • git rm [--cashed] <file> - удалить файл [удалить из индекса]
  • git mv <file> - перемещение
  • git log
    • --oneline - удобная запись лога коммитов
    • git log --pretty="%C(Yellow)%h %C(reset)%ad (%C(Green)%cr%C(reset))%x09 %C(Cyan)%an: %C(reset)%s" - один из вариантов записи
    • ` git config –global alias.work ‘log –pretty=format:”%h%x09%an%x09%ad%x09%s”’` - настройка для вывода
    • -S <str> - поиск по добавленному коду
    • --pretty=format:"%h - %an, %ar : %s - формат вывода
    • --graph - граф деления веток
  • git commit --amend - добавление в последний коммит новые изменения
  • git reset HEAD <file> - отмена индексирования всех или одного файла
    • --hard - сброс изменений во всех файлах, меняет файлы, не сохраняет текущие изменения
    • HEAD^ - отмена последнего коммита, после этого изменения можно заново проиндексировать для изменения истории(!)
    • `HEAD~[цифра] - отмена последних [цифра] коммитов
  • git checkout <file> - сброс файла к последнему закомиченному состоянию
    • -b <branch> - создать новую ветку от существующей
  • git stash - спрятать изменения без индексирования
    • pop - взять последние спрятанные изменения и применить к текущему состоянию
    • list - посмотреть всё спрятанное
    • apply [stash@{0}] - применить последнее прятанье, не убирает его из стека stash
    • drop<stash@{0}> - удалить из списка
    • show - посмотреть изменения
    • branch <namebranch> - создание ветки из спрятанного
    • -p - выбрать, что прятать
  • git pull origin
  • git merge <branch>
    • git diff [--theirs --ours --base] - изменения во время слияния в участвующих ветках
  • git blame [-L 12,22] <file> - информаци из git по каждой строке файла

Никогда не использовал, но интересно:

  • git remote -v - побродно написать об удалённых репозиториях
  • git remote add origin1 https:/123.com/lala - добавить удалённый репозиторий
  • git remote show origin - информация о репозитории
  • git tag -a v1.2 [-m текст тега] [commit] - добавить тег к текущей записи или к определённому коммиту в истории
  • git config --list - показать текущие настройки
  • git help <command> - справочная
  • git clean -d -f -n - удалить все неотслеживаемые файлы -n - указывает, ничего не удалять, а только показать, что будет удалено
  • git grep <str> - поиск по всем файлам
    • -p - показать в каком методе нашли
    • --and - добавочное условие для поиска
  • git log -L :funclala:lala.c - изменения для функции в файле
  • git rebase -i HEAD~3 - перезапись последних трёх коммитов и далее по подсказкам
  • git filter-branch --tree-filter 'rm -f useless.txt [--all ]HEAD - удалить файл из всех коммитов [все ветки]
  • git filter-branch --subdirectoryfilter trunk HEAD - сделать корневой папку trunk, удалить всю историю не в ней
  • git reset --soft HEAD~2 - перезапись последних двух коммитов в один
  • git bisect [start,bad,good] - двоичный поиск проблем по истории
  • git submodule add .... - субмодули

#git