Поиск…


Простые псевдонимы

Существует два способа создания псевдонимов в Git:

  • с файлом ~/.gitconfig :
[alias]
    ci = commit
    st = status
    co = checkout
  • с командной строкой:
 git config --global alias.ci "commit"
 git config --global alias.st "status"
 git config --global alias.co "checkout"

После создания псевдонима введите:

  • git ci вместо git commit ,
  • git st вместо git status ,
  • git co вместо git checkout .

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

 git ci -m "Commit message..."
 git co -b feature-42

Список / поиск существующих псевдонимов

Вы можете перечислить существующие псевдонимы git с помощью --get-regexp :

$ git config --get-regexp '^alias\.'

Поиск псевдонимов

Чтобы искать псевдонимы , добавьте следующее в свой .gitconfig под [alias] :

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"

Тогда ты можешь:

  • git aliases - показать ВСЕ псевдонимы
  • git aliases commit - только псевдонимы, содержащие "commit"

Расширенные псевдонимы

Git позволяет использовать команды non-git и полный синтаксис оболочки sh в ваших псевдонимах, если вы их префикс ! ,

В файле ~/.gitconfig :

[alias]
    temp = !git add -A && git commit -m "Temp"

Тот факт, что полный синтаксис оболочки доступен в этих префиксированных псевдонимах, также означает, что вы можете использовать функции оболочки для создания более сложных псевдонимов, таких как те, которые используют аргументы командной строки:

[alias]
    ignore = "!f() { echo $1 >> .gitignore; }; f"

Вышеупомянутый псевдоним определяет функцию f , затем запускает ее с любыми аргументами, которые вы передаете псевдониму. Таким образом, запуск git ignore .tmp/ будет добавлять .tmp/ в ваш .gitignore файл.

Фактически, этот шаблон настолько полезен, что Git определяет для вас переменные $1 , $2 и т. Д., Поэтому вам даже не нужно определять для него специальную функцию. (Но имейте в виду, что Git также добавит аргументы в любом случае, даже если вы получите доступ к ним через эти переменные, поэтому вам может понадобиться добавить фиктивную команду в конце.)

Обратите внимание, что псевдонимы с префиксом ! таким образом, запускаются из корневого каталога вашего git checkout, даже если ваш текущий каталог глубже в дереве. Это может быть полезным способом запускать команду из корня без необходимости явно указывать cd .

[alias]
    ignore = "! echo $1 >> .gitignore"

Временно игнорировать отслеживаемые файлы

Временно пометить файл как проигнорированный (передать файл как параметр в псевдоним) - введите:

unwatch = update-index --assume-unchanged

Чтобы снова запустить файл отслеживания - введите:

watch = update-index --no-assume-unchanged

Чтобы просмотреть все файлы, которые были временно проигнорированы, введите:

unwatched = "!git ls-files -v | grep '^[[:lower:]]'"

Чтобы очистить список неподписанных списков - введите:

watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"

Пример использования псевдонимов:

git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall

Показать довольно журнал с графом ветвей

[alias]
  logp=log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short

  lg =  log --graph --date-order --first-parent \
     --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
  lgb = log --graph --date-order --branches --first-parent \                      
     --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
 lga = log --graph --date-order --all \                                          
   --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'

Здесь объяснение опций и заполнителей, используемых в формате --pretty (исчерпывающий список доступен с git help log )

--graph - нарисовать дерево фиксации

--date-order - использовать фиксацию метки времени когда возможно

- first-parent - следует только за первым родителем на узле объединения.

--branches - показать все локальные ветви (по умолчанию отображается только текущая ветка)

--all - показать все локальные и удаленные ветви

% h - значение хеша для фиксации (сокращенно)

% ad - штамп даты (автор)

% an - Имя пользователя автора

% an - Записать имя пользователя

% C (авто) - использование цветов, определенных в разделе [цвет]

% Creset - сбросить цвет

% d - --decorate (имена ветвей и тегов)

% s - сообщение фиксации

% ad - дата автора (будет следовать директиве -date) (а не дата commiter)

% an - имя автора (может быть% cn для имени commiter)

Обновление кода при сохранении линейной истории

Иногда вам необходимо сохранить линейную (не ветвящуюся) историю вашего кода. Если вы какое-то время работаете над веткой, это может быть сложно, если вам нужно сделать обычный git pull так как это приведет к слиянию с восходящим потоком.

[alias]
  up = pull --rebase

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

Использовать:

git up

Посмотрите, какие файлы игнорируются вашей конфигурацией .gitignore.

[ alias ]

    ignored = ! git ls-files --others --ignored --exclude-standard --directory \
            && git ls-files --others -i --exclude-standard

Показывает одну строку на файл, поэтому вы можете grep (только каталоги):

$ git ignored | grep '/$'
.yardoc/
doc/

Или считать:

~$ git ignored | wc -l
199811                 # oops, my home directory is getting crowded

Нестандартные поэтапные файлы

Как правило, для удаления файлов, которые поставлены для фиксации с помощью обязательства reset git reset , reset имеет множество функций в зависимости от аргументов, предоставленных ему. Чтобы полностью отключить все поставленные файлы, мы можем использовать псевдонимы git для создания нового псевдонима, который использует reset но теперь нам не нужно помнить о том, чтобы предоставить правильные аргументы для reset .

git config --global alias.unstage "reset --"

Теперь, в любое время, когда вы хотите разбить файлы с этапами, введите git unstage и вам хорошо идти.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow