Próbuję zrobić coś w rodzaju zatwierdzenia
git commit --author="John Doe <[email protected]>" -m "<the usual commit message>"
gdzie John Doe to użytkownik, którego imię chcę dokonać zatwierdzenia.
Wygląda na to, że wszystko w porządku git log
. Jednak gdy wykonam a gitk
, nazwa autora jest poprawna, ale nazwa osoby odpowiedzialnej jest wybierana z moich globalnych ustawień konfiguracji git (i dlatego jest ustawiona na moje imię / adres e-mail).
pytania
Jaka jest różnica między nimi (osoba odpowiedzialna a autor)?
Czy powinienem ustawić także osobę odpowiedzialną za komunikację również innemu użytkownikowi?
Jeśli tak to jak?
git
git-config
gitk
mu 無
źródło
źródło
Odpowiedzi:
Oryginalny plakat pyta:
Autor jest osobą, która pierwotnie napisała kod. Z drugiej strony przyjmuje się, że osoba odpowiedzialna jest za osobę, która popełniła kod w imieniu oryginalnego autora. Jest to ważne w Git, ponieważ Git umożliwia przepisywanie historii lub stosowanie łatek w imieniu innej osoby. Darmo w Internecie Pro Git książka wyjaśnia to tak:
Oryginalny plakat pyta:
Nie, jeśli chcesz być szczery, nie powinieneś przypisywać autora do autora, chyba że autor i autor są w rzeczywistości tą samą osobą.
źródło
git config user
a potemgit add
igit commit
wtedy, git będzie wiedział, kto dodał, a kto popełnił, ale nadal nie będzie wiedział, kto to napisał.Lista mailingowa +
git format-patch
+git apply
może generować autora! = CommitterW projektach takich jak jądro Linuksa, w których znajdują się łatki:
git format-patch
git send-email
git apply
albogit am
: Jak używać git am zastosować łaty z wiadomości e-mail?generowanie jednego nowego zatwierdzenia z innym autorem i podmiotem zatwierdzającym:
Zobacz na przykład tę losowo wybraną poprawkę i odpowiadający jej zatwierdzenie:
Interfejsy internetowe Git, takie jak GitHub i GitLab, mogą generować autor!
Ponieważ Git (Hub | Lab) przechowuje zarówno repozytoria nadrzędne, jak i widełkowe na tej samej maszynie, mogą one automatycznie robić wszystko, co można zrobić lokalnie, w tym:
Utwórz zatwierdzenie scalania.
Nie generuje autora! = Committer.
Utrzymuje SHA lub nowe zatwierdzenie nienaruszone i tworzy nowe zatwierdzenie:
Historycznie była to pierwsza dostępna metoda na GitHub.
Lokalnie odbywa się to za pomocą
git merge --no-ff
.Powoduje to dwa zatwierdzenia na żądanie ściągnięcia i zachowuje rozwidlenie w historii git.
rebase na górze
master
GitHub włamuje się również do commits, aby ustawić committer == ktokolwiek nacisnął przycisk scalania. Nie jest to obowiązkowe i nie jest nawet domyślnie wykonywane lokalnie przez
git rebase
, ale daje rozliczalność opiekunowi projektu.Drzewo git wygląda teraz następująco:
który jest dokładnie taki jak w
git apply
łatkach e-mail.Obecnie na GitHub:
https://help.github.com/articles/about-merge-methods-on-github/
Jak ustawić moduł zatwierdzający nowego zatwierdzenia?
Najlepsze, co mogłem znaleźć, to użycie zmiennych środowiskowych do zastąpienia obiektu polecającego:
Jak uzyskać datę zatwierdzenia i zatwierdzenia danego zatwierdzenia?
Domyślnie wyświetlane są tylko dane autora
git log
.Aby zobaczyć datę zleceniodawcy, możesz:
sformatuj dziennik specjalnie w tym celu:
gdzie
cn
icd
zaCommitter Name
iCommitter Date
użyj
fuller
predefiniowanego formatu:Zobacz także: Jak skonfigurować „git log”, aby wyświetlał „datę zatwierdzenia”
zejdź na niski poziom i pokaż wszystkie dane zatwierdzenia:
Jak ustawić datę zatwierdzenia nowego zatwierdzenia?
git commit --date
ustawia tylko datę autora: dla daty osoby odpowiedzialnej najlepiej znalazłem zmienną środowiskową:Zobacz także: Jaka jest różnica między autorem a autorem w Git?
Jak Git przechowuje wewnętrznie autora kontra autora?
Zobacz: Jaki jest format pliku obiektu git commit?
Zasadniczo zatwierdzenie jest plikiem tekstowym i zawiera dwa pola oddzielone liniami:
To wyjaśnia, że oba są dwoma całkowicie niezależnymi wpisami danych w obiekcie zatwierdzenia.
źródło
GIT_COMMITTER_*
przesłonięć, git nadal odmówi wykonania zatwierdzenia, jeśli nie ustawiłeś domyślnego committera za pomocągit config
.GIT_{COMMITTER,AUTHOR}_EMAIL
@Ciro Santilli 新疆 改造 中心 六四 事件 法轮功zaproponował użycie
Aby uniknąć powtarzania nazwy i adresu e-mail, możesz ich ponownie użyć
który najpierw ustawia zmienne w osobnych poleceniach, a następnie wykorzystuje je do
git commit
wywołania (zwróć uwagę na podwójne nawiasy).źródło