Git scerge -no -fff opcja

Git scerge -no -fff opcja

Zrozumienie opcji git scale no-f

Łatwa zdolność scalania GIT jest jedną z jego mocnych stron. Podczas scalania Git używa szybkiego scalania do przodu, gdy zauważa, że ​​głowa obecnej gałęzi jest przodkiem zatwierdzenia, które próbujesz połączyć. W szybkim połączeniu nie ma nowego zatwierdzenia. Git po prostu przesuwa wskaźnik. Jeśli takie zachowanie nie jest pożądane, możesz użyć flagi No-F, aby stworzyć nowe zatwierdzenie scalania.

Jak wygląda scalanie z szybkim do przodu i bez

Po szybkiej formie historia Git będzie wyglądać tak:

C0 -> c1 -> c2-> c3

Dla tej samej liczby zatwierdzeń tutaj jest historia scalania bez szybkiego do przodu:

W pierwszym przypadku nic nie wskazuje na to, że było żadne rozgałęzienie. W drugim przypadku historia pokazuje zobowiązanie C4, aby wskazać, gdzie nastąpiło scalanie.

Przechodzenie przez przykład

Utworzysz repozytorium git, utworzysz gałąź, a następnie spróbujesz scals z szybkim naprzódm.

Sekcja 1: konfiguracja

Najpierw możesz utworzyć repozytorium GIT z następującymi krokami:

$ mkdir my_project
$ cd my_project
$ git init
$ dotyk a.tekst
$ git add -a
$ git commit -m "c0: dodanie a.tekst"

Teraz utwórzmy gałąź o nazwie Funkcje i poprowadź kilka zmian:

Funkcje oddziału $ git
$ git Funkcje kasy
$ touch b.tekst
$ git add -a
$ git commit -m "c1: dodanie b.tekst"
$ Touch c.tekst
$ git add -a
$ git commit -m "c2: dodanie c.tekst"
$ touch d.tekst
$ git add -a
$ git commit -m "c3: dodanie d.tekst"

Sekcja 2: Scal z szybkim do przodu

Wróćmy do Master Branch i scalmy funkcje w nim:

$ git kectout Master
$ git scal funkcje

Wyjście:

Aktualizacja 08076FB… 9EE88EB
Szybkie do przodu
B.txt | 0
C.txt | 0
D.txt | 0
3 pliki zmienione, 0 wstawek (+), 0 delecji (-)
Utwórz tryb 100644 B.tekst
Utwórz tryb 100644 C.tekst
Utwórz tryb 100644 D.tekst

Jeśli sprawdzisz historię, zobaczysz:

$ git log -linia
9EE88EB C3: Dodanie d.tekst
C72B92C C2: Dodanie C.tekst
2E4039e C1: Dodanie B.tekst
08076fb C0: Dodanie.tekst

Tak więc wszystkie zobowiązania z oddziału funkcji znajdują się teraz w gałęzi głównej. Jeśli nadal wprowadzasz zmiany w Master, nie ma sposobu, aby wiedzieć, kiedy oddział funkcji został w nim połączony.

Sekcja 3: Bez szybkiego do przodu

Powtórz sekcję 1 dla nowego folderu.

Następnie wypróbuj scalanie bez szybkiego do przodu:

$ git kectout Master
$ git merge-no-f funkcja

Otworzy się następujące w domyślnym edytorze tekstu GIT:

Scalaj „funkcje”
# Wprowadź wiadomość o zatwierdzeniu, aby wyjaśnić, dlaczego to scalanie jest konieczne,
# Zwłaszcza jeśli łączy zaktualizowany Upstream w oddział tematyczny.
#
# Wiersze zaczynające się na „#” zostaną zignorowane, a puste wiadomość przerywa
# zatwierdzenie.

Zmodyfikuj komentarze. W takim przypadku możesz po prostu dodać „C4:” przed „funkcjami„ scalał gałąź ””. Wyjście powinno wyglądać tak:

Scalone przez strategię „rekurencyjną”.
B.txt | 0
C.txt | 0
D.txt | 0
3 pliki zmienione, 0 wstawek (+), 0 delecji (-)
Utwórz tryb 100644 B.tekst
Utwórz tryb 100644 C.tekst
Utwórz tryb 100644 D.tekst

Teraz, jeśli sprawdzisz historię, powinno to wyglądać jak następujące:

$ git log -linia
E071527 C4: Scal gałąź „funkcje”
BB79C25 C3: Dodanie d.tekst
692BD8C C2: Dodanie C.tekst
A0DF62A C1: Dodanie B.tekst
7575971 C0: Dodanie.tekst

Widać, że nawet jeśli masz dokładnie takie same zmiany, ta wersja scerge ma dodatkowe zatwierdzenie C4, co oznacza scalanie gałęzi funkcji w Master.

Wniosek

Flaga Git Scal No-F. pomaga stworzyć bardziej czytelną historię. Pozwala umieszczać tagi, które wyraźnie pokazują, gdzie miały miejsce scalone. Może zaoszczędzić czas i wysiłek podczas debugowania.

Dalsze badanie:

  • https: // git-scm.COM/DOCS/GIT-MERGE
Bibliografia:
  • Stack przepełnienie: co is-the-difference-Between między git-i-git-git-merge-no-f
  • https: // www.Atlassian.com/git/tutorials/Używając gałęzi/git-merge