Git traktuje wiersze rozpoczynające się od #
jako wiersze komentarza podczas zatwierdzania. jest to bardzo denerwujące podczas pracy z systemem śledzenia biletów i próby wpisania numeru biletu na początku linii, np.
#123 salt hashed passwords
git po prostu usunie wiersz z komunikatu zatwierdzenia. czy jest jakiś sposób na ucieczkę od skrótu? próbowałem \
i !
, ale nic nie działa. białe znaki wcześniej #
są zachowywane, więc nie są również działającym rozwiązaniem problemu.
git
commit
ticket-system
ticket-tracking
knittl
źródło
źródło
git config core.commentchar
pozwala na konfigurację tego znaku komentarza. Zobacz moją odpowiedź poniżejgit commit --cleanup=scissors
będzie bardziej elastyczny. Zobacz szczegóły w mojej odpowiedziOdpowiedzi:
To zachowanie jest częścią
git commit
domyślnego zachowania „czyszczenia”. Jeśli chcesz, aby linie zaczynały się od#
, możesz użyć alternatywnego trybu czyszczenia.Na przykład
Jeśli to zrobisz, musisz uważać, aby usunąć wszystkie
#
wiersze, których nie chcesz pojawiać się w zatwierdzeniu.źródło
commit.template
zmienną konfiguracyjną git.git commit --amend --cleanup=whitespace
Zauważ, że od git1.8.2 (luty 2013) możesz użyć innego znaku niż „
#
” w komentarzowym wierszu w komunikacie zatwierdzenia.Dzięki temu możesz użyć „
#
” jako numeru referencyjnego błędu.Teoretycznie można umieścić
core.commentChar
słowo (wiele znaków), ale git 2.0.x / 2.1 będzie bardziej restrykcyjne (Q3 2014).Zobacz commit 50b54fd autor: Nguyễn Thái Ngọc Duy (
pclouds
) :config: bądź surowy na core.commentChar
git 2.0.x / 2.1 (III kwartał 2014) doda automatyczny wybór dla
core.commentChar
:Zobacz commit 84c9dc2
Lista znaków kandydujących do „auto” to:
Oznacza to, że takie polecenie
git commit -m '#1 fixed issue'
automatycznie przełączy zmienną commentChar na „;
”, ponieważ „#
” zostało użyte w komunikacie zatwierdzenia.źródło
$ git config --global core.commentchar ';'
git config --global core.commentChar auto
Odpowiedzi tutaj są dobre i szczegółowe, ale dla git noob, takiego jak ja, dostosowywanie opcji konfiguracji git nie jest tak oczywiste. Oto przykład, aby zmienić
#
na;
znaki komentarza:To wszystko, co musisz zrobić.
źródło
git commit
do otwarcia skonfigurowanego edytora do edycji wiadomości zatwierdzenia!git -c core.commentChar="|" commit --amend
(zamień na|
cokolwiek chcesz).Możesz użyć opcji wiersza poleceń
-m
:źródło
Jeśli wykonujesz interaktywny rebase, to kiedy zapiszesz wiadomość zatwierdzenia bez niczego (ponieważ
#
na początku zrobił z niej komentarz i dlatego został zignorowany), git pokaże ci, co zrobić:Więc po prostu popraw wiadomość:
i kontynuuj rebase:
źródło
git commit --cleanup=scissors
należy użyć. Został dodany do Git v2.0.0 2014.05.21z
git commit --help
źródło
commit.cleanup = whitespace
i usuwanie# …
komentarzy, jak już sugerował @CharlesBailey.scissors
-mode dodatkowo czyści składnię nożyczek używaną przezgit
format-patch
/mailinfo
/am
; to jednak nie używać…-- >8 --…
podczas dodawania komentarza do popełnienia wiadomości składni .# ...
mocno usuwać komentarzy. 2. Nie jestem pewien co do drugiej części twojego komentarza,scissors
tryb zdecydowanie jest wgit commit --help
. Zgit
jakiej wersji korzystasz? @ SlippD.Thompsonwhitespace
Tryb oferuje usuwanie 1. początkowych i końcowych pustych linii, 2. końcowych białych znaków, 3. zwinięcie kolejnych pustych linii.scissors
oferuje usuwanie 1. początkowych i końcowych pustych linii, 2. końcowych białych znaków, 3. zwijać kolejne puste linie, 4. wszystkiego z linii (włącznie)# -…- >8 -…-
. Jednak linie nożyczek (# -…- >8 -…-
) są wstawiane tylko przy użyciugit-format-patch
/mailinfo
/am
. Dlatego w przypadku normalnego przepływu pracygit-commit
/merge
/rebase
/ tryb usuwania zapewnia zero korzyści w porównaniu z trybem. v2.11.0cherry-pick
scissors
whitespace
git commit --cleanup=scissors
PRZED wstawiam# ------------------------ >8 ------------------------
wiersz przedgit status
informacją. Jak poniżej: `# ------------------------> 8 ------------------- ----- # Nie dotykaj linii powyżej. # Wszystko poniżej zostanie usunięte. # On master master # # Wstępne zatwierdzenie # # Zmiany do zatwierdzenia: # nowy plik:# ------------------------ >8 ------------------------
przed statusem txt „Wygląda na to, że możesz być…” _ podczas używaniascissors
; jednak wstawia linię nożyczki po tym# Conflicts: …
tekście. Miałemcommit.status = false
ustawione w moim.gitconfig
, więc nie widział dowolny tekst statusu, tylko tekst konfliktów. Poprawiono mnie; zmiana na głosowanie.Użyj innego prefiksu dla numeru biletu. Lub wstaw słowo do numeru biletu, na przykład „Bug # 42”. Lub wstaw pojedynczy znak spacji do linii; jeśli chcesz usunąć ten biały znak, możesz do tego dodać hak zatwierdzania.
Osobiście wolałbym, aby tego rodzaju manipulowanie wiadomościami zatwierdzającymi nie było wykonywane przez hak, ponieważ może być bardzo irytujące, gdy uruchamia się, gdy tego nie chcesz. Najłatwiejszym rozwiązaniem jest ponowne przemyślenie problemu.
źródło
#xxx
występowanie w dowolnym miejscu w komunikacie zatwierdzenia spowoduje link do problemu. Nie musi być na początku zatwierdzenia. Może to coś się zmieniło w ciągu ostatnich pięciu lat?Wszystkie moje zobowiązania zaczynają się od,
#issueNumber
więc umieściłem ten bojler na moimvim .git/hooks/commit-msg
:Załóżmy więc, że mamy gałąź
#15
i wysyłamy komunikat zatwierdzeniaadd new awesome feature
. Przy takim podejściu pojawi się komunikat końcowego zatwierdzenia#15 add new awesome feature
.źródło