Jak wspomniano w Yoshua WUYTS ' odpowiedź , używając git branch
:
git branch --unset-upstream
Inne opcje:
Nie musisz usuwać swojego lokalnego oddziału.
Wystarczy usunąć oddział lokalny, który śledzi oddział zdalny:
git branch -d -r origin/<remote branch name>
-r, --remotes
każe gitowi usunąć gałąź zdalnego śledzenia (tj. usunąć zestaw gałąź, aby śledzić gałąź zdalną). To będzie nie usunąć gałąź na pilocie zdalnego repo !
Zobacz „ Trudności ze zrozumieniem git-fetch ”
nie ma takiej koncepcji lokalnych gałęzi śledzenia, tylko zdalne gałęzie śledzenia.
Podobnie origin/master
jak gałąź zdalnego śledzenia master
w origin
repozytorium
Jak wspomniano w Dobes Vandermeer „s odpowiedź , trzeba również, aby wyzerować konfigurację związaną z lokalnego oddziału:
git config --unset branch.<branch>.remote
git config --unset branch.<branch>.merge
Usuń informacje wstępne dla <branchname>
.
Jeśli nie określono żadnej gałęzi, domyślnie jest to bieżąca gałąź.
(git 1.8+, październik 2012 r., commit b84869e autor: Carlos Martín Nieto ( carlosmn
) )
To sprawi, że każde naciśnięcie / pociągnięcie będzie całkowicie nieświadome origin/<remote branch name>
.
remote.<name>.fetch
konfiguracji refspec, ale nie jestem pewien, czy można wykluczyć gałąź podczas określania refspec.git branch -d -r origin/<remote branch name>
usunie zdalną gałąź śledzenia zadeklarowaną lokalnie w twoim repozytorium. To będzie nie usunąć gałąź na samej zdalnego repo (tylkogit push :development
to zrobi). Więc kiedy przesuwasz swój lokalnydevelopment
, z historią inną niż gałąź zdalnego programowania (na zdalnym repozytorium), nadal otrzymasznon-fast-forward
ostrzeżenie.Aby usunąć upstream dla bieżącego oddziału:
Jest to dostępne dla Git v.1.8.0 lub nowszej. (Źródła: 1.7.9 , 1.8.0 )
źródło
źródło
git branch --unset-upstream [branchname]
fatal: 'origin/master' does not appear to be a git repository fatal: Could not read from remote repository.
po zrobieniu tego i wypróbowaniu git pull origin / masterAby usunąć powiązanie między lokalnym i zdalnym uruchomieniem oddziału:
Opcjonalnie usuń później oddział lokalny, jeśli go nie potrzebujesz:
To nie usunie zdalnej gałęzi.
źródło
git branch -d <branch>
nie jest wymagane do usunięcia powiązania.git branch -vv
, nadal zobaczysz stare gałęzie, dopóki tego nie zrobiszgit branch -d <branch>
.git pull
może pobrać wszystkie zdalne gałęzie i ponownie dodać dowolne, które uzna za „pojawiły się” na pilocie. Możesz zmienić to zachowanie „wyciągnij wszystkie gałęzie”, wykonującgit config [--global] push.default simple
lubgit config [--global] push.default current
. Więcejpush.default
tutaj .Najprostszym sposobem jest edycja
.git/config
Oto przykładowy plik
Usuń linię
merge = refs/heads/test1
wtest1
sekcji oddziałuźródło
.git/config
jest również dostępna.Możesz usunąć gałąź zdalnego śledzenia za pomocą
jak wspomniano powyżej VonC. Jeśli jednak zachowasz lokalną kopię gałęzi,
git push
nadal będziesz próbował wypchnąć tę gałąź (co może dać ci błąd szybkiego przewijania, tak jak w przypadku ruffin ). Jest tak, ponieważpush.default
domyślna konfiguracjamatching
oznacza:(patrz http://git-scm.com/docs/git-config pod
push.default
)Ponieważ po usunięciu gałęzi zdalnego śledzenia prawdopodobnie nie jest to pożądane, możesz ustawić
push.default
naupstream
(lubtracking
jeśli masz git <1.7.4.3)za pomocą
a git przestanie próbować wypychać gałęzie, które „przestałeś śledzić”.
Uwaga: prostszym rozwiązaniem byłoby po prostu zmiana nazwy lokalnego oddziału na coś innego. To również wyeliminowałoby pewien potencjał do zamieszania.
źródło
Oto jedna linijka do usunięcia wszystkich gałęzi zdalnego śledzenia pasujących do wzorca:
git branch -rd $(git branch -a | grep '{pattern}' | cut -d'/' -f2-10 | xargs)
źródło
git branch -r -D $(git branch -r | grep -v "master")
To nie jest odpowiedź na pytanie, ale nie mogłem wymyślić, jak uzyskać przyzwoite formatowanie kodu w powyższym komentarzu ... więc auto-down-reputation-be-cholera, oto mój komentarz.
Mam przepis przesłany przez @Dobes w fantazyjnym shmancy [alias] w moim .gitconfig:
Wtedy mogę po prostu uciec
źródło
git branch --unset-upstream
przestaje śledzić wszystkie lokalne oddziały, co nie jest pożądane.Usuń
[branch "branch-name"]
sekcję z.git/config
pliku, a następniegit branch -D 'branch-name' && git branch -D -r 'origin/branch-name'
dla mnie działa najlepiej.
źródło
W ten sposób możesz usunąć swój zdalny oddział
źródło
Najprostszym sposobem na to jest zdalne usunięcie oddziału, a następnie użycie:
git fetch --prune (alias git fetch -p)
źródło