jeśli scalisz --squash your old_branch, otrzymasz to ostrzeżenie zawsze, gdy usuniesz go lokalnie. Kiedy zgniatanie, twój indeks jest resetowany, dlatego nie pasuje do old_branch HEAd
Antoine Wils
Podczas gdy inne odpowiedzi są poprawne, komentarz Antoine'a był powodem przynajmniej w moim przypadku.
Squrppi
Odpowiedzi:
66
To tylko ostrzeżenie, że zmiany zostały przeniesione do gałęzi origin, ale nie są one scalane master, więc usuwasz je tylko lokalnie.
Ostrzega, że nie masz już lokalnej kopii tego oddziału, ale istnieje w origin
Jeśli chcesz usunąć również zdalną gałąź, użyj git push --delete origin old_branch
Tak, masternie jest w to zamieszany. Masz na myśli raczej obecną gałąź. ;)
Fernando Espinosa
1
Otrzymuję to ostrzeżenie, nawet jeśli wykonam operację, git branch -d branch_namektóra ma tylko usunąć oddział lokalnie. Dlaczego w tym przypadku potrzebne jest ostrzeżenie?
Akshay Damle
2
Ale origin / old_branch jest łączony w origin / master. Później zrobiłem git pull origin na gałęzi głównej. Wciąż ten sam błąd. Czy to nie jest błąd w GH?
vikramvi
36
Zakładając, że aktualnie się masterwyrejestrowałeś, oznacza to, że zmiany wprowadzone w old_branchnie są obecne w master. Jednak one są obecne w old_branchsprawie origin.
Tak. To jest poprawna odpowiedź! „ale jeszcze nie scalony z HEAD”, HEADtutaj odwołuje się do HEAD lokalnej gałęzi głównej.
Devy
3
Ale origin / old_branch jest łączony w origin / master. Później zrobiłem git pull origin na gałęzi głównej. Wciąż ten sam błąd. Czy to nie jest błąd w GH?
vikramvi
1
@vikramvi Zakładając, że dokonałeś masterwyewidencjonowania lokalnie, może to nadal wystąpić, jeśli zmienił się SHA któregokolwiek z zatwierdzeń; tj. oparłeś się origin/old_branchna origin/master. Nawet jeśli było to szybkie przyspieszenie, wygeneruje to nowy SHA dla każdego nowego zatwierdzenia z origin/old_branch, powodując, że git zobaczy oryginalne SHA w twoim lokalnym old_branchjako nie scalone po ściągnięciu zmian do twojego lokalnego masteroddziału. Możesz zobaczyć tę odpowiedź i tę odpowiedź, dlaczego tak się dzieje.
8
Oznacza to, że Twój lokalny oddział old_branchjest na bieżąco ze zdalnym oddziałem old_branchna zdalnym, originale nie jest scalany z oddziałem, masterktóry jest uważany za główną gałąź w repozytorium.
To tylko środek ostrożności ze strony gita. Daje ci wskazówkę: może wykonałeś swoją pracę w gałęzi tematycznej i zapomniałeś połączyć ją z gałęzią główną?
aktualizacja
Git ostrzega przed utratą zmian. Na przykład, jeśli nie masz swojego old_branchna głównym gicie, nie pozwól ci nawet usunąć gałęzi, która nie jest scalona z masterem (cóż, pozwala, ale z kluczem, -Dktóry jest force-deleteopcją).
Więc -D jest wtedy, gdy nie udostępniłeś usuwanej gałęzi (w rzeczywistości jest to zatwierdzenie) żadnej zdalnej gałęzi. Chociaż ostrzeżenie ma na celu poinformowanie Cię, że udostępniłeś gałąź (zatwierdzenia) pilotowi, ale po prostu nie jest ona scalona z HEAD. HEAD to HEAD, zdalne / refs / HEAD to nie to samo. Ale proszę mnie poprawić, jeśli się mylę co do różnic między zdalnym HEAD a lokalnym HEAD.
Eric,
7
Aby dodać do innych odpowiedzi, może to również oznaczać, że zmiana może zostać scalona z wzorcem, tylko że lokalna kopia wzorca jeszcze jej nie odzwierciedla. Tak czy inaczej, to tylko informuje cię, że lokalna kopia twojego mastera nie zawiera zmian, które wypchnąłeś na origin. Scalone / Nie połączone ... może, może nie
Odpowiedzi:
To tylko ostrzeżenie, że zmiany zostały przeniesione do gałęzi
origin
, ale nie są one scalanemaster
, więc usuwasz je tylko lokalnie.Ostrzega, że nie masz już lokalnej kopii tego oddziału, ale istnieje w
origin
Jeśli chcesz usunąć również zdalną gałąź, użyj
git push --delete origin old_branch
źródło
master
nie jest w to zamieszany. Masz na myśli raczej obecną gałąź.;)
git branch -d branch_name
która ma tylko usunąć oddział lokalnie. Dlaczego w tym przypadku potrzebne jest ostrzeżenie?Zakładając, że aktualnie się
master
wyrejestrowałeś, oznacza to, że zmiany wprowadzone wold_branch
nie są obecne wmaster
. Jednak one są obecne wold_branch
sprawieorigin
.źródło
HEAD
”,HEAD
tutaj odwołuje się do HEAD lokalnej gałęzi głównej.master
wyewidencjonowania lokalnie, może to nadal wystąpić, jeśli zmienił się SHA któregokolwiek z zatwierdzeń; tj. oparłeś sięorigin/old_branch
naorigin/master
. Nawet jeśli było to szybkie przyspieszenie, wygeneruje to nowy SHA dla każdego nowego zatwierdzenia zorigin/old_branch
, powodując, że git zobaczy oryginalne SHA w twoim lokalnymold_branch
jako nie scalone po ściągnięciu zmian do twojego lokalnegomaster
oddziału. Możesz zobaczyć tę odpowiedź i tę odpowiedź, dlaczego tak się dzieje.Oznacza to, że Twój lokalny oddział
old_branch
jest na bieżąco ze zdalnym oddziałemold_branch
na zdalnym,origin
ale nie jest scalany z oddziałem,master
który jest uważany za główną gałąź w repozytorium.To tylko środek ostrożności ze strony gita. Daje ci wskazówkę: może wykonałeś swoją pracę w gałęzi tematycznej i zapomniałeś połączyć ją z gałęzią główną?
aktualizacja
Git ostrzega przed utratą zmian. Na przykład, jeśli nie masz swojego
old_branch
na głównym gicie, nie pozwól ci nawet usunąć gałęzi, która nie jest scalona z masterem (cóż, pozwala, ale z kluczem,-D
który jestforce-delete
opcją).źródło
master
, ale aktualneHEAD
.Aby dodać do innych odpowiedzi, może to również oznaczać, że zmiana może zostać scalona z wzorcem, tylko że lokalna kopia wzorca jeszcze jej nie odzwierciedla. Tak czy inaczej, to tylko informuje cię, że lokalna kopia twojego mastera nie zawiera zmian, które wypchnąłeś na origin. Scalone / Nie połączone ... może, może nie
źródło