Пара тапок » Developer Tools http://paratapok.ru Блог о веб-разработке Sun, 18 Dec 2022 12:14:48 +0000 ru-RU hourly 1 https://wordpress.org/?v=4.3.33 Как в git изменить комментарий к коммиту? http://paratapok.ru/developer-tools/3578_kak-v-git-izmenit-kommentarij-k-kommitu/ http://paratapok.ru/developer-tools/3578_kak-v-git-izmenit-kommentarij-k-kommitu/#comments Sun, 18 Feb 2018 09:00:06 +0000 http://paratapok.ru/?p=3578 Читать далее →]]> Рабочий процесс в системе контроля версий git сводится к тому, что разработчик создает от ветки develop новую ветку для реализации конкретной задачи. Принято, что в ветке каждому коммиту соответствует более-менее логически законченная единица работы или же изменения, которые в будущем может потребоваться отменить.

Однако порой в спешке под конец рабочего дня разработчик может закоммититься с подписью вроде такой «WIP» или «TMP». В статье рассмотрим, как в git переименовать коммит. При этом возможны два основных случая — коммит является последним или коммит не является последним.

Переименование последнего коммита

На следующий день разработчик приходит на работу, просматривает изменения в ветке и вспоминает, что нужно изменить комментарий к коммиту. Для этого достаточно использовать команду git commit --amend -m "Новое название коммита".

Изменение комментария к не последнему коммиту

Допустим разработчик забыл с утра откорректировать название коммита, и в течение дня сделал ещё несколько коммитов. Тогда встаёт вопрос, как обновить комментарий, например для четвёртого коммита вглубь истории.

Итак, чтобы в git исправить комментарий такого коммита потребуется выполнить rebase в интерактивном режиме.

1. Сначала нужно посмотреть, на сколько коммитов назад находится тот коммит, которые нужно отредактировать. Для этого можно использоваться либо git log --oneline, либо консольный GUI для Git, например, tig.

Видим, что изменить комментарий нужно к коммиту «tmp», находящийся позади на четыре коммита относительно HEAD.

2. Теперь запускаем rebase в интерактивной режиме:

git rebase -i HEAD~5

3. В появившемся редакторе следует в строках коммитов изменить команду pick на reword.

Затем сохраняем файл и выходим.

4. Автоматически начнется ребейз и откроется файл редактирования коммита. Здесь необходимо ввести новую подпись к коммиту.

5. Остаётся сохранить и выйти. Теперь название коммита изменено.

Важно. Оба описанных способа приводят к изменению коммитов, а значит коммиты на сервере и в локальной ветке будут теперь отличаться. Поэтому запушить ветку так просто не получится — нужно использовать флаг --force.

git push --force

Однако, если работа в ветке ведётся несколькими разработчиками одновременно, тогда такой подход неприемлем.

]]>
http://paratapok.ru/developer-tools/3578_kak-v-git-izmenit-kommentarij-k-kommitu/feed/ 2
Как в MC выделить все файлы или несколько файлов? http://paratapok.ru/developer-tools/3285_kak-v-mc-vydelit-vse-fajly-ili-neskolko-fajlov/ http://paratapok.ru/developer-tools/3285_kak-v-mc-vydelit-vse-fajly-ili-neskolko-fajlov/#comments Wed, 07 Feb 2018 19:31:39 +0000 http://paratapok.ru/?p=3285 Читать далее →]]> При подключении к удаленному серверу через SSH бывает удобно пользоваться не только командной строкой, но и консольными файловыми менеджерами, к которым относится например Midnight Commander. Одной из частых операций над файлами является конечно же их выделение. Рассмотрим с помощью каких сочетаний клавиш выделить все файлы в директории или же несколько файлов.

Если требуется выделить несколько файлов, то в Linux MC для этого предусмотрено несколько вариантов — можно использовать сочетание клавиш Ctrl+T или Insert. То есть можно передвигаться стрелками вверх-вниз по списку файлов и директорий, а когда указатель оказывается на нужном объекте, то нажать указанные выше клавиши. Таким способом легко помечать небольшой количество файлов или же если требуется просмотреть глазами все названия файлов, т.е. нет возможности задать маску, по которой необходимо выделить объекты.

Если же требуется выделить все файлы в директории, а файлов очень много, то подойдет второй способ — нажимаем клавишу плюса «+». Появится поле для ввода маски для выделения группы файлов, в нём можно использовать регулярные выражения. Чтобы выделить сразу все файлы просто вводим звёздочку «*» и нажимаем Enter. Более короткий способ ввода такой маски — нажать звёздочку «*» прямо в режиме просмотра файлов.


Стоит отметить, что бывает полезным сначала выделить все файлы, а потом исключить из выделения с помощью регулярного выражения группу файлов по маске. Для этого используется «\» (unselect) — действие, обратное тому, которое вызывается по клавише «+».

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

]]>
http://paratapok.ru/developer-tools/3285_kak-v-mc-vydelit-vse-fajly-ili-neskolko-fajlov/feed/ 1
Как показать меню в Sublime Text 3? http://paratapok.ru/developer-tools/3068_kak-pokazat-menyu-v-sublime-text-3/ http://paratapok.ru/developer-tools/3068_kak-pokazat-menyu-v-sublime-text-3/#comments Thu, 01 Feb 2018 19:22:54 +0000 http://paratapok.ru/?p=3068 Читать далее →]]> Среди веб-разработчиков большой популярностью пользуются такие редакторы как Atom и Sublime Text. Статья будет полезна новичкам, тем кто только начинает пользоваться текстовым редактором Sublime.

При настройке Sublime, показывая или скрывая сайдбар, минимап, консоль и другие элементы интерфейса, иногда пользователи случайно нажимают на «Hide menu».


После этого верхнее меню скрывается и непонятно, как его снова открыть?


Как оказывается делается это очень просто — для этого нужно использовать сочетание клавиш Ctrl+Shift+P. В результате откроет строка ввода.


В неё вводим «menu» и в выпадающем списке выбираем «View: Toggle Menu», что переводится как переключить меню.

После этого строка верхнего меню снова отобразится.

Есть ещё более простой способ как показать навигационное меню в Sublime Text. Для этого нажимаем клавишу Alt, после чего на время до момента следующего клика мышью появляется меню. В нём выбираем пункт «View» («Вид»), а выпадающем подменю «Show Menu» («Показать меню»).

Вот такие два простых способа управления отображением меню в Саблайм Текст.

]]>
http://paratapok.ru/developer-tools/3068_kak-pokazat-menyu-v-sublime-text-3/feed/ 3
Как в Git перенести commit из одной ветки в другую? http://paratapok.ru/developer-tools/2593_kak-v-git-perenesti-commit-iz-odnoj-vetki-v-druguyu/ http://paratapok.ru/developer-tools/2593_kak-v-git-perenesti-commit-iz-odnoj-vetki-v-druguyu/#comments Thu, 28 Apr 2016 19:38:45 +0000 http://paratapok.ru/?p=2593 Читать далее →]]> Нередко возникает ситуация, когда срочно требуется выполнить небольшую задачу. Разработчик быстро пробегается глазами по ТЗ и старается максимально оперативно вникнуть в суть задачи. При этом можно попросту забыть создать новую ветку, и понять об ошибке уже после финального каммита.

В такой ситуации, когда возникает необходимость перенести commit из одной ветки в другую на помощь приходит команда git cherry-pick, применяющая к дереву проекта изменения, которые были внесены указанным каммитом.

Синтаксис команды git cherry-pick

Синтаксис команды git cherry-pick

Рассмотрим ситуацию на примере. Мы находились в master и сделали в него случайно коммит. Тогда чтобы вынести его в отдельную ветку и отправить на merge request нам потребуется выполнить следующие команды:

1. Смотрим историю изменений и запоминаем хэш коммита <hash-commit-0>, соответствующего правильному состоянию ветки master, то есть когда ещё в неё не было добавлено лишних коммитов по ошибке.

git log

2. Также следует запомнить хэш коммита <hash-commit-1>, который был лишним в ветке master. Иногда бывает, что лишними оказываются сразу несколько коммитов, тогда если они расположены последовательно друг за другом следует запомнить самый давний <hash-commit-begin> и самый последний <hash-commit-end>.

3. Перейдём на найденный коммит <hash-commit-0>. Другими словами переходим на то состояние ветки master, от которого нам нужно создать новую ветку.

git checkout <hash-commit-0>

4. Создадим новую ветку, в которую планируется вынести неверно расположенный коммит, и перейдем на неё.

git checkout -b <name-branch>

5. Переносим коммит в новую ветку.

git cherry-pick <hash-commit-1>

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

git cherry-pick master

Если же нужно перенести не один, а несколько подряд идущих коммитов от <hash-commit-begin> до <hash-commit-end>, то это делается похожим образом.

git cherry-pick <hash-commit-begin>..<hash-commit-end>

Если же вы хотите, чтобы при переносе изменений коммит не создавался, то используйте параметр -n (—no-commit):

git cherry-pick -n d112ecf96

Как и при операции git rebase в процессе переноса коммита могут возникнуть конфликты. Как и при обычном git merge их следует разрешить, добавить изменения в индекс с помощью git add, а затем продолжить запустив git cherry-pick --continue.

6. Теперь когда коммиты перенесены в ветку <name-branch>, следует удалить их из ветки master. Поэтому переключаемся на ветку master

git checkout master

Смещаем указать master на коммит <hash-commit-0>

git reset --hard <hash-commit-0>
]]>
http://paratapok.ru/developer-tools/2593_kak-v-git-perenesti-commit-iz-odnoj-vetki-v-druguyu/feed/ 1