Рубрики
Uncategorized

Поднимайте свой git-fu!

Если бы у меня был доллар на каждый раз, когда я смотрел, как … в GIT мне было бы достаточно, чтобы запустить новый … Tagged with git, DevOps, новички, учебник.

Если бы у меня был доллар на каждый раз, когда я смотрел вверх Как … в 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»