Git: Jak dodać numer zadania z VSTS do ostatnich 5 commit message

Opublikowane przez Tomasz Prasołek w dniu

W poprzednim poście pokazałem jak automatycznie dodawać numer zadania z VSTS do commit message. Dziś pokażę jak automatycznie dodać ten numer zadania do wielu ostatnich commitów.

Z pomocą przychodzi Nam polecenie git filter-branch. Polecenie to zastosuje odpowiedni filtr (wybrany przez Nas) do każdego commita w branchu  i w efekcie powstanie nowy commit.

Składnia dla tego polecenia składa się z 4 elementów:

  1. Podstawowe polecenie: git filter-branch.
  2. Nazwa filtru np.: --msg-filter.
  3. Polecenie / skrypt do wykonania.
  4. Zakres commitów, które chcemy, aby objął nasz filtr. Bez podania zakresu, filtr będzie zastosowany dla wszystkich commitów w branchu, w którym się aktualnie znajdujemy.

Załóżmy, że chcemy dodać numer zadania z VSTS do ostatnich pięciu naszych commitów, bo zapomnieliśmy tego zrobić w trakcie developmentu. Nasza sytuacja wygląda tak:
filter branch git log before

Do tego zadania użyjemy filtru –msg-filter.

git filter-branch --msg-filter 'sed "s/\(.*\)/\1 #321/g"' HEAD~5..HEAD

Po wykonaniu polecenia nasza historia wygląda tak:
filter branch git log after

Jak widać sha-1 commitów uległy zmianie. HEAD~5..HEAD – oznacza, że filtr należy zastosować dla 5 ostatnich commitów. Można zamiast tego wpisać nazwę brancha. Wtedy filtr zostanie zastosowany do wszystkich commitów w podanym branchu np.:

git filter-branch --msg-filter 'sed "s/\(.*\)/\1 #321/g"' feature-branch

Jeśli chciałbyś dowiedzieć się więcej jak działa polecenie filter-branch albo sed użyte do edycji commit message, to poniżej są linki.

Źródła:
https://manishearth.github.io/blog/2017/03/05/understanding-git-filter-branch/
http://www.grymoire.com/Unix/Sed.html

Kategorie: GitPorady

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *