Мои псевдонимы в Git

Перевод статьи My git aliases, автор - Kamal Marhubi

У меня есть несколько алиасов (псевдонимов) в моем .gitconfig, которые я считаю полезными в своей работе. Так что я охотно поделюсь ими с вами.

git root: вывести полный путь к корневой директории хранилища

# Print absolute path of repo root directory
root = rev-parse --show-toplevel

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

somewhere/in/repo$ sed -i 's/oldname/newname/g' $(git root)/**

git detach: переход в состояние отделенного HEAD

# Get to a detached HEAD state on purpose! Usage: `git detach [REF]`
detach = !sh -c 'git checkout $(git rev-parse ${1:-HEAD})' --

Обычно отдельно стоящий HEAD не требуется, но я хотел в некоторых случаях использовать его в качестве псевдонима. Например, иногда я хочу экспериментировать, не создавая ветку. Запуск git detach создает "ветвь", и я могу вносить изменения, но без необходимости называть ее или удалять впоследствии. Если нужно сохранить работу, я всегда могу использовать команды git checkout -b new-branch-name или git checkout old-branch-name && git merge --ff-only HEAD@{1}.

Этот псевдоним использует расширение оболочки, вызывая sh -c. Запускается команда оболочки, а затем sh -c запускает все остальное через sh. Окончательный -- необходим для отправки дополнительных аргументов, чтобы перейти к git checkout, а не sh.

git sha1: печать короткого SHA1 для коммита

# Print short sha1; usage: `git sha1 [REF]`
sha1 = !sh -c 'git rev-parse --short ${1:-HEAD}' --

Чаще всего используется с xsel или pbcopy, как git sha1 | xsel -i, чтобы скопировать текущий коммит sha1 в буфер обмена.

Я использую sh -c снова для расширения оболочки, хотя здесь это просто для подачи реф по умолчанию.

git gh-url: получить ссылку GitHub для репозитория

# Get the GitHub URL for a GitHub repository. Usage: `git gh-url [REMOTE]`
gh-url = "!f() { \
	if ! remote=${1:-$(git config --get \
		branch.$(git symbolic-ref --short HEAD).remote)}; \
	then \
		echo no remote specified and could not get remote for HEAD; \
		exit; \
	fi; \
	if ! remote_url=$(git config --get remote.$remote.url); \
	then \
		echo "could not get URL for remote \\`$remote\\`"; \
		exit; \
	fi; \
	case $remote_url in \
		git@github.com:*.git) \
			repo=$(echo $remote_url \
				| sed 's/git@github.com:\\(.*\\).git/\\1/');; \
		https://github.com/*) \
			repo=$(echo $remote_url \
				| sed 's+https://github.com/\\(.*\\).git+\\1+');; \
		*) \
			echo "\\`$remote\\` does not appear to have " \
				"a GitHub remote url: $remote_url"; \
			exit 1;; \
	esac; \
	echo https://github.com/$repo; \
}; \
f"

Вполне самоочевидно с точки зрения использования, но это иллюстрирует и другие паттерны GIT псевдонимов: определение функции оболочки и немедленный ее вызов. Общий паттерн таков:

my-alias = "!f() { \
	echo COMMANDS GO HERE, ESCAPING NEWLINES WITH \
		BACKSLASHES, AND TERMINATING WITH SEMICOLONS; \
}; \
f"

Поскольку мы в строке внутри файла конфигурации, есть досадное количество необходимостей, но вы можете сделать это довольно быстро.

Не нашли ответ на свой вопрос? Возможно, вы найдете решение проблемы на нашем канале в Youtube! Здесь мы собрали небольшие, но эффективные инструкции. Смотрите и подписывайтесь на наш youtube-канал!

Смотреть на Youtube

Руководства и обзоры

1 Что нужно восстановить?

Видео

MP4, AVI и HD видео хранятся на телефоне и / или по ошибке удаляются вместе с фотографиями и другими медиафайлами.

Контакты

Номера телефонов друзей и знакомых из приложения «Контакты Android», журналы вызовов; Восстановление SIM-карты.

Фото

Удалены файлы JPG / PNG из Галереи Android; фото, загруженные на мобильный, файлы повреждены после восстановления.

Смс и сообщения

Чаты WhatsApp и Facebook, текстовые сообщения в соцсетях, информация на сим-карте

2 Где пропали файлы?

На sd-карте

Фотографии и документы хранятся на SD-картах. Часто на них случайно удаляются файлы

На телефоне

Программы для восстановления не распознают внутреннее хранилище телефона как диск, но есть другие решения.

На USB флешке

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

На HDD или SSD

Несмотря на то, что настольные платформы становятся все менее популярными, проблема потери файлов всегда оставалась.