Używam ciężko Git przez około 7 lat. Kilka dni temu znalazłem zachowanie, które mnie zaskoczyło. Zauważyłem, że git log
, git blame
i git bisect
wykazują dziwne zachowanie. A friend daj mi znać o --full-history
flagie do git log
, która rozwiązała mój problem. Chcę wiedzieć, dla mojej własnej edukacji, czy istnieje równoważna poprawka dla git blame
i git bisect
.Git: Odpowiednik `--full-history` for` git bisect` oraz `git winame`
Zapraszam widzi ten problem dla siebie z tego repo: https://dl.dropboxusercontent.com/u/1927707/problematic_repo.7z
Oto jego dziennika:
$ git log --graph
* commit b7a8d7aa001d06eb7491ab5fb447a8dd3aa421a8
| Author: Ram Rachum <[email protected]>
| Date: Tue Apr 19 17:45:01 2016 +0300
|
| adding more to some-file
|
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: 2413945 3068c7d
| | Author: Ram Rachum <[email protected]>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
| | Author: Ram Rachum <[email protected]>
| | Date: Tue Apr 19 16:02:27 2016 +0300
| |
| | Adding sugar to coffee
| |
* | commit 24139451ab954b1f0a9ef616775a3dba0ac81669
|/ Author: Ram Rachum <[email protected]>
| Date: Tue Apr 19 16:01:28 2016 +0300
|
| Creating some-file
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <[email protected]>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
w pierwszym popełnienia plik coffee
dodano. W zatwierdzeniu 3068c7d
dodałem wiersz "cukier" do pliku coffee
. Ale potem scaliłem tę gałąź w gałąź development
iw tym scaleniu popełniono błąd i usunięto linię "cukru", pozostawiając pustą coffee
. Następnie dodano inne zatwierdzenie b7a8d7a
, dokonując niepowiązanej zmiany, dla dobrej miary.
Teraz patrzę na moją kawę i stwierdzam, że nie ma w niej cukru. Pamiętam, że dodawałem cukru do kawy. Uruchomę git log coffee
i otrzymam wynik:
$ git log coffee
commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <[email protected]>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
To wszystko. git log
nie pokazuje ani mojego oryginalnego zatwierdzenia, które dodało cukru, ani scalenia, które go usunęło. Dwie bardzo istotne poprawki, których brakuje.
Byłem sfrustrowany przez około godzinę przez ten problem, ponieważ zdarzyło się to w dużym repozytorium przedsiębiorstw, w którym zatwierdzenia są znacznie trudniejsze do znalezienia ręcznie.
Próbowałem również użyć git bisect
i git blame
, aby potwierdzić oba zatwierdzenia, ale oba te narzędzia zignorowały dwa zatwierdzenia. git bisect
wskazał mi nieprawidłowe zatwierdzenie po zakończeniu wszystkich akcji git bisect bad
i git bisect good
.
Potem, jak powiedziałem na początku, przyjaciel wskazał mi w kierunku --full-history
flag
$ git log --full-history --graph coffee
* commit 0aa833916e908ea93902a6c4c227f9a884a1bcef
|\ Merge: cf02fbb 3068c7d
| | Author: Ram Rachum <[email protected]>
| | Date: Tue Apr 19 17:44:31 2016 +0300
| |
| | Merge branch 'master' into development
| |
| * commit 3068c7d2548f1798b6840f73b13a649937339f28
|/ Author: Ram Rachum <[email protected]>
| Date: Tue Apr 19 16:02:27 2016 +0300
|
| Adding sugar to coffee
|
* commit cf02fbbc40104cd02eea4c7c6f134ef1fd7b5661
Author: Ram Rachum <[email protected]>
Date: Tue Apr 19 16:00:47 2016 +0300
Create coffee
To sprawia, że jestem szczęśliwy, ponieważ pokazuje dwie istotne rewizje, jeden cukier Dodawanie i scalanie że usunięte to. Mój problem został rozwiązany. Ale naprawdę chciałbym wiedzieć, jak sprawić, aby również git bisect
i git blame
zachowywały się tak samo. Czy ktoś się dowie?
'git blame' może również pozwolić' --full-history 'bezpośrednio tutaj (chciałbym wypróbować to na twoim repo, ale nie mogę rozpakować pliku 7zip). Bisect może nie chcieć dotykać scaleń, ponieważ sam je obsługuje. W ogóle tego nie widzisz, ponieważ 'git rev-list' pomija wiele scaleń: zobacz dyskusję dokumentacji na temat TREESAME i obsługi korespondencji seryjnej (i jak zmienia to historia -full). – torek
@torek Próbowałem już teraz, "wina" wydaje się akceptować flagę, ale wygląda na to, że nic nie zmienia. Próba zarówno "git win - pełna historia" i "git win - pełna historia - zwrot" nie przyniosła żadnych rezultatów. Jeśli chodzi o niemożność otwierania archiwów 7z, tutaj jest to w archiwum ZIP: https://dl.dropboxusercontent.com/u/1927707/foo.zip –
@torek Próbowano również 'git blame --reverse HEAD ^^^ .. HEAD - kawa pełna historii, wciąż nic nie dostaje. –