Если бы у меня был доллар на каждый раз, когда я смотрел вверх Как … в git У меня было бы достаточно, чтобы запустить свою собственную криптовалюту (Dibs на имя Gitcoin ™ ️ 😛). Как разработчики, мы используем GIT почти каждый день, и большинство из нас испытывают себя déjà vu с некоторыми общими сценариями при работе с GIT. В этом блоге обсуждается, как легко перемещаться по таким сценариям, а также ответы на некоторые частые GIT как-то Анкет
Отключение Command Command Pagination
Git команды, как git diff
и git log
может распечатать большие объемы текста в стандартный выход и, следовательно, по умолчанию (с использованием команды меньше Чтобы отключить лиц и иметь GIT отображать весь вывод, мы можем просто передать
—нет-пейджер флаг, чтобы git.
git --no-pager log
Если вы хотите отключить его на всех оболочках, вы можете добавить следующую строку в свой .bashrc
(Linux) или .zshrc
(macOS), хотя я не рекомендую это делать.
export GIT_PAGER=""
Этот метод лучше всего подходит для сценариев и автоматизации, где мы хотим избежать взаимодействия с пользователем и поддерживать поток управления без подсказок.
Удаление файлов ошибочно добавлено в совершение
Много раз мы можем непреднамеренно совершать неправильные файлы и проверить GIT Статус
Не помогает, так как нет никаких команд подсказок, как это было бы до совершения. В этой ситуации мы можем использовать
git restore --source=HEAD~ --staged --
Чтобы вернуть файл обратно в зону постановки.
Если вы не уверены в именах файлов и предпочли бы перемещать все файлы обратно в зону постановки, тогда
git reset --soft HEAD~
Будет ваш лучший друг.
Проверка хэша текущего коммита
Я лично требую этого все время, чтобы перемещаться туда -сюда между коммитами. Каждый коммит имеет хэш SHA-1, состоящий из нескольких свойств коммита, таких как дата, автор/комитет, послание коммита и т. Д. Вы можете получить текущий коммит SHA, используя
git rev-parse HEAD
GIT Compe Committistic
git shortlog
Команда может использоваться для объединения коммитов автором и заголовком. Это особенно полезно для объявлений о выпуске. Это даже предоставляет сводку коммитов по графу.
Например, сводки подсчета коммита в AWS/EKS-DISTRO-PROW-JOBS Репозиторий следующим образом:
$ git shortlog -sn 62 EKS Distro Bot 31 Abhay Krishna 29 EKS Distro PR Bot 27 Abhay Krishna Arunachalam 23 [REDACTED] 15 [REDACTED] . . .
Удерживающее сообщение о коммите при внесении поправок
Иногда нам может потребоваться внести незначительные изменения в файлах, которые уже были совершены. После обновления файлов и git добавить
Эд, нам нужно внести поправки в коммитировку, чтобы включить новые изменения, но мы, вероятно, хотим сохранить то же сообщение о коммите.
Мы можем сделать это с помощью
git commit --amend --no-edit
или же
git commit --amend -C HEAD
Примечание : Я много использую это Поэтому я настроил следующий псевдоним GIT, который короткий для C Омит W ithout A почистить
git config alias.cwa 'commit --amend --no-edit'
Переупорядочение незанятых коммитов
В компании -разработке программного обеспечения чаще всего вы можете работать над несколькими функциями или модулями одновременно. В некоторых случаях вы можете захотеть более позднее изменение функции первым рассмотрено и объединилось перед другими изменениями по нескольким причинам, таким как когерентность, приоритет и т. Д. В таких случаях мы можем передать заказ следующим образом.
- Получите список всех коммитов с их хэши
git log --oneline
- Определите глубину диапазона коммит, который вы хотите переупорядочить по сравнению с главой.
- Выполните интерактивную Rebase на ветке.
git rebase -i HEAD~n # n is the depth from the previous step
Это откроет редактор с указанными коммитами в указанном диапазоне, а также подсказкам о том, как редактировать историю. Помимо повторного упорядочения, вы также можете редактировать, выбирать, отбросить, переродить и сквош по желанию.
- После того, как вы сохранили и вышли из редактора, вы можете повторить шаг 1, чтобы просмотреть повторную историю коммита.
Примечание: После изменения истории и перед тем, как отправиться в удаленную ветвь, важно пересмотреть на вершине удаленной головы, чтобы подтвердить, что переупорядочение не вызывает конфликтов.
git fetch upstream git rebase upstream/main
Восстановление потерянных изменений
Если вы находитесь в ситуации, когда вы написали сотни строк кода, а затем в конечном итоге потеряли их из -за некоторого заговора вселенной, то эта команда может спасти день. Эта команда git Refloog
(Читать ref-log а не Re-Flog Хотя я понимаю, почему можно подумать, что они могут ожидать, что GIT будет сотрудничать, неоднократно порка его за все пытки 😤).
git Refloog
дает вам всю историю всех изменений и действий, которые вы совершили во всех ветвях в местном репозитории. Записи в журнале называются Справочные журналы и они записывают, когда кончики филиалов и других ссылок были обновлены в локальном рабочем дереве GIT. Каждая запись отмечена номером индекса, который можно использовать для движения вперед и назад через историю.
Refloog
Имеет несколько случаев использования, таких как извлечение потерянных/удаленных коммитов, возвращение нарушающих изменений, определение дивергентных путей и т. Д.
Просмотр помощи GIT в браузере
Ручные страницы для команды GIT помогают открыть в терминале по умолчанию. Просмотр управления может быть громоздкой задачей, и они также не удобны для пользователя при поиске информации (если только ваш Vim-Fu не на месте). Если вы предпочитаете искать страницу руководства команды в браузере, все, что вам нужно сделать, это использовать -W
или --Web
флаг.
Например, страница человека для Git Branch
может быть открыт в браузере по умолчанию (настраивается), используя
git help branch -w
или же
git branch --help -w
Получив затронутые имена файлов
Команды, как git diff
и git show
В их необработанной форме отлично подходят для демонстрации всех изменений, которые еще предстоит и быть совершены соответственно. Но в некоторых случаях нам может потребоваться только имена файлов, затронутые операцией GIT (например, для сценариев или фильтрации). Мы можем напрямую получить только имена, передавая следующие флаги команде.
git diff --pretty="format:" --name-only git show --pretty="format:" --name-only
Чтобы увидеть все файлы, добавленные в зону постановки, мы можем использовать
git diff --staged --pretty="format:" --name-only
Фильтрация на основе расширений файлов также поддерживается. Например, чтобы получить список всех файлов Python в последнем коммите, мы можем использовать
git show --pretty="format:" --name-only -- "*.py"
Это подводит нас к концу этого блога. Спасибо всем за прочитание! В качестве заключительных примечаний я хочу отметить, что GIT гибкий в том смысле, что он дает вам несколько различных методов для решения одной проблемы, а вышеуказанные методы только из моего опыта и не выступают в качестве канона. Не стесняйтесь оставлять свои комментарии и исправления и обращаться ко мне на LinkedIn и Twitter Анкет
Оригинал: «https://dev.to/abhaykrishna/elevate-your-git-fu-3ip4»