GIT - как мне скопировать SHA без мыши на OSX?
На OSX часто хожу на git log
чтобы найти коммит, обычно несколько назад, скопируйте его моей мышью, а затем сделайте ребаз с этого.
Как я могу сделать это легко без использования мыши или запоминания?
4 ответа
Просто запомните первые пару букв / цифр.
Git не нужен полный хеш для перебазирования, ему нужны только первые пару символов.
Например:
git log
commit a64da17d5f674973ead1a0bcf0196f292313893f
commit 11be728caad156d5cb6ce336747aab4e5e3417b0
commit e63760a22b4e5919961e409a66fac09176a574b6
commit 3521260b7d04fc92eaeb9c70fa46999dc1ecda3d
commit ba4868bd6a6b4e9d9a77f66e77be189d37b1ffe8
(минус дополнительный коммит материал)
Теперь, допустим, вы хотите второй, 11be728caad156d5cb6ce336747aab4e5e3417b0
Вы можете просто сделать ребаз на первые пару символов.
git rebase 11be
Дополнительная информация: технически git нужен только уникальный запуск хеша. Так что в этом случае git rebase 1
было бы достаточно, потому что другие хэши коммитов не начинаются с 1. Однако в крайних случаях вам может потребоваться более 4-5 символов (очень маловероятно)
Кроме того, не стесняйтесь использовать git log -n
чтобы получить только последние n количество коммитов. Удерживая это значение на низком уровне, коммит обычно остается на вашем экране, когда вы вызываете rebase, поэтому вам не нужно запоминать. Просто вручную скопируйте первые пару символов. Подсказка: если git сбрасывает вывод журнала после того, как вы нажали 'q', чтобы выйти, вы можете использовать команду git --no-pager log -n
чтобы получить вывод на "флешку".
Для дополнительной информации о git и rebase, если вы знали, что хотите перебазировать ровно 4 коммита, вы можете просто использовать HEAD
ссылка. Ваш текущий коммит HEAD
и 1 коммит назад HEAD~1
и т. д. Например:
git rebase HEAD~4
установил бы 3521260b7d04fc92eaeb9c70fa46999dc1ecda3d
как новый HEAD
(так как мы перебазируем на ba4868bd6a6b4e9d9a77f66e77be189d37b1ffe8
)
На OSX вы можете использовать pbcopy
,
Итак, чтобы получить SHA1 вашего последнего коммита в буфере обмена:
git log -1 --format="%H" | pbcopy
Обновленная версия, если вы хотите проверить, что копируете
Это скопирует короткий хеш. Эта версия полезна, если вам нужно вставить хеш фиксации в комментарий GitHub. Автоматические ссылки GitHub коммиты (ссылки).
git log -1 --format="%h" | pbcopy | echo `git log -1 --format="%h"`
Это скопирует длинный хеш
git log -1 --format="%H" | pbcopy | echo `git log -1 --format="%H"`
Чтобы скопировать хэш коммита из n коммитов назад, передайте его в качестве аргумента команде log.
git log HEAD~3 --format="%h" | pbcopy
git log HEAD~3 --format="%H" | pbcopy
Заменять
HEAD~3
с количеством возвращаемых коммитов, которые вы хотите выполнить. Один из способов проверить, что вы скопировали правильный хеш, - это вставить его в git show.
git show <pasted hash>
Если это неправильно, измените родительский номер соответствующим образом. Чем выше число, тем дальше вы уходите в прошлое.
Обратитесь к этой ссылке SO для получения дополнительной информации о просмотре истории фиксации с использованием тильды
~
и морковь
^
ПРИМЕЧАНИЕ: не был уверен, стоит ли мне просто ответить на Wejrowski как комментарий, но решил опубликовать как еще один ответ, основанный на предыдущих ответах. Спасибо Kuhess и Nick Humrich за первоначальный ответ