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

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

Jeśli spodobał Ci się ten wpis i chcesz otrzymywać powiadomienia o nowych treściach dotyczących zagadnień związanych z Gitem, to zachęcam do subskrypcji mojego bloga.

1 thought on “Git: Jak dodać numer zadania z VSTS do ostatnich 5 commit message

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *