Czy istnieje sposób ustalenia, kiedy utworzono oddział Git? Mam repozytorium w repozytorium i nie pamiętam, aby je utworzyć i pomyślałem, że może zobaczenie znacznika czasu utworzenia pobudzi moją pamięć.
git
branch
git-branch
paxos1977
źródło
źródło
Odpowiedzi:
Posługiwać się
Jeśli wolisz widzieć go w kontekście za pomocą gitk, użyj
(gdzie foo to nazwa gałęzi, której szukasz).
źródło
Jak wskazano w komentarzach i odpowiedzi Jackuba , o ile gałąź jest młodsza niż liczba dni ustawiona w ustawieniu konfiguracji
gc.reflogexpire
(domyślnie 90 dni), możesz użyć swojego dziennika, aby dowiedzieć się, kiedy odwołanie do gałęzi było pierwszy stworzony.Pamiętaj, że
git reflog
może przyjąć większośćgit log
flag. Ponadto zauważ, żeHEAD@{0}
selektory stylów są faktycznie pojęciem czasu i w rzeczywistości są traktowane (w sposób zhakowany) jako ciągi dat. Oznacza to, że możesz użyć flagi--date=local
i uzyskać wynik w następujący sposób:Czasami może być przydatne użycie
--date=relative
:Ostatnia uwaga:
--all
flaga (która jest tak naprawdę flagą git-log rozumianą przez git-reflog) pokaże rekordy dla wszystkich znanych ref wrefs/
(zamiast po prostuHEAD
), co wyraźnie pokaże zdarzenia rozgałęzienia:źródło
gc.reflogexpire
ciągu kilku dni.Pro Git § 3.1 Rozgałęzienie Git - Czym jest gałąź , dobrze wyjaśnia, czym tak naprawdę jest gałąź git
Ponieważ gałąź jest tylko lekkim wskaźnikiem, git nie ma wyraźnego pojęcia o swojej historii ani dacie utworzenia. „Ale poczekaj,” słyszę, jak mówisz, „oczywiście, git zna moją historię oddziału!” Cóż, w pewnym sensie.
Jeśli uruchomisz jedną z następujących czynności:
zobaczysz coś, co wygląda jak „historia twojego oddziału”, ale tak naprawdę jest to wykaz zatwierdzeń osiągalnych z „oddziału”, które nie są osiągalne z poziomu master. Daje to potrzebne informacje, ale tylko wtedy, gdy nigdy nie scaliłeś „gałęzi” z powrotem do wzorca i nigdy nie scaliłeś wzorca z „odgałęzieniem” od momentu jego utworzenia. Jeśli się połączyłeś, ta historia różnic upadnie.
Na szczęście reflog często zawiera potrzebne informacje, jak wyjaśniono w różnych innych odpowiedziach tutaj. Użyj tego:
aby pokazać historię oddziału. Ostatni wpis na tej liście to (prawdopodobnie) punkt, w którym utworzono gałąź.
Jeśli gałąź została usunięta, wówczas „gałąź” nie jest już prawidłowym identyfikatorem git, ale możesz użyć tego zamiast tego, co może znaleźć to, czego potrzebujesz:
Lub w powłoce cmd Windows:
Pamiętaj, że reflog nie będzie działał skutecznie na zdalnych gałęziach, tylko na tych, nad którymi pracowałeś lokalnie.
źródło
gc.reflogexpire
dni, jak wskazano w tej odpowiedzi i tej odpowiedzi .git reflog --date=local <branch>
Po pierwsze, jeśli oddział został utworzony w
gc.reflogexpire
ciągu kilku dni (domyślnie 90 dni, tj. Około 3 miesięcy), możesz użyćgit log -g <branch>
lubgit reflog show <branch>
znaleźć pierwszy wpis w reflog, który byłby zdarzeniem tworzenia i wygląda mniej więcej takgit log -g
:Dostajesz, kto utworzył gałąź, ile operacji temu i z której gałęzi (cóż, może to być po prostu „Utworzono z HEAD”, co niewiele pomaga).
Tak powiedział MikeSep w swojej odpowiedzi .
Po drugie, jeśli masz gałąź dłuższą niż
gc.reflogexpire
i uruchomiłeśgit gc
(lub uruchomiono ją automatycznie), musisz znaleźć wspólnego przodka z gałęzią, z której został utworzony. Spójrz na plik konfiguracyjny, być może jest tambranch.<branchname>.merge
wpis, który powiedziałby ci, na jakiej gałęzi ten jest oparty.Jeśli wiesz, że gałąź, o której mowa, została utworzona poza gałęzią master (rozwidlenie z gałęzi master), możesz na przykład użyć następującego polecenia, aby zobaczyć wspólnego przodka:
Możesz także spróbować
git show-branch <branch> master
alternatywnie.Tak powiedział gbacon w swojej odpowiedzi .
źródło
Nie jestem jeszcze pewien tego polecenia git, ale myślę, że można je znaleźć w dziennikach.
Wygląda na to, że moje pliki zawierają uniksowy znacznik czasu.
Aktualizacja: Wydaje się, że istnieje opcja użycia historii ponownego logowania zamiast historii zmian podczas drukowania dzienników:
Możesz również śledzić ten dziennik, z powrotem do momentu utworzenia oddziału.
git log
pokazuje datę zatwierdzenia, a nie datę wykonania czynności, która spowodowała wpis w reflogu. Nie znalazłem tego jeszcze, poza tym, że zajrzałem do dziennika na ścieżce powyżej.źródło
Spróbuj tego
źródło
%
wcześniej(refname)
| cut -c 5- | sort -r |
a następnie przeszedłem przez grep dla miesiąca, podając mniej więcej porządek chronologiczny w odwrotnej kolejności.--sort='-committerdate'
(Zwróć uwagę na „-” przed datą committer dla odwrotnej kolejności chronologicznej).Posługiwać się:
aby wyświetlić cały cykl życia repozytorium w bieżącym folderze. Nazwa oddziału, która pojawia się po raz pierwszy (od dołu do góry) jest źródłem, które zostało utworzone.
To znaczy:
Rozwój gałęzi jest tworzony (kasa -b) z poziomu głównego
Funkcja gałęzi-jira35 jest tworzona (kasa -b) z poziomu rozwoju
Funkcja gałęzi-jira-sut-46 jest tworzona (kasa -b) z poziomu rozwoju
źródło
Wymyśliłem to, zanim znalazłem ten wątek.
źródło
Polecenia To pokazuje daty utworzenia oddziału
dev
zmain
źródło
Jeśli chcesz uzyskać szczegółowe informacje dla wszystkich oddziałów
źródło
Znalazłem najlepszy sposób: zawsze sprawdzam najnowszą gałąź utworzoną w ten sposób
źródło
W połączeniu z odpowiedzią Andrew Sohna ( https://stackoverflow.com/a/14265207/1929406 )
źródło
Ten zrobił to dla mnie: (10 lat później)
Ponieważ nie ma zapisanych informacji o czasach tworzenia gałęzi, powoduje to wyświetlenie pierwszego zatwierdzenia każdego oddziału (
--no-walk
), który zawiera datę zatwierdzenia. Użyj--remotes
dla zdalnych gałęzi lub pomiń dla lokalnych gałęzi.Ponieważ wykonuję co najmniej jedno zatwierdzenie w gałęzi przed utworzeniem kolejnej, pozwoliło mi to prześledzić kilka miesięcy tworzenia gałęzi (i uruchomienie funkcji) do celów dokumentacji.
źródło: AnoE na stackexchange
źródło
składnia:
git reflog --date=local | grep checkout: | grep ${current_branch} | tail -1
przykład:
git reflog --date=local | grep checkout: | grep dev-2.19.0 | tail -1
wynik:
cc7a3a8ec HEAD@{Wed Apr 29 14:58:50 2020}: checkout: moving from dev-2.18.0 to dev-2.19.0
źródło