Chcę zmienić domyślny docelowy oddział firmy Git, abym mógł to zrobić
git push
Zamiast:
git push upstream
Obecnie jest ustawiony na pilota źródłowego i chcę ustawić go na innego pilota.
Próbowałem usunąć oryginalny (sklonowany z) pilot
git remote rm origin
Który usunął oryginalny pilot. Ale nie rozwiązuje git push
problemu. Nadal otrzymuję:
fatal: Brak skonfigurowanego miejsca docelowego push. Podaj adres URL z
wiersza polecenia lub skonfiguruj zdalne repozytorium za pomocą ...
Próbowałem także grać z:
git remote set-url --push myfork origin
i inne opcje, ale żadna nie wydaje się działać (może dlatego, że zbyt wcześnie usunąłem pilot źródłowy?)
Po odpowiedzi tutaj próbowałem zmienić:
git config push.default upstream (or matching)
ale żadne nie działało.
źródło
git push -u <remote_name> <local_branch_name>:<corresponding_remote_branch_name>
.git push -u origin master:master
.git push
do wypchnięcia zdalnej gałęzi bieżącego lokalnego oddziału? Mam na myśli to, że muszę uruchomić to polecenie dla każdej gałęzi. Dobrze? Czy nie mogę po prostu przeprowadzić wstępnej konfiguracji dla całego repo? @MarcoLazzerigit push -u origin master
wystarczy? Czy tylko ilustrujesz pełną składnię?Aby zmienić, który pilot nadrzędny jest „podłączony” do twojej gałęzi, użyj
git branch
polecenia z flagą konfiguracji nadrzędnej.Najpierw upewnij się, że pilot istnieje:
git remote -vv
Ustaw preferowany pilot dla bieżącej (pobranej) gałęzi:
git branch --set-upstream-to <remote-name>
Sprawdź, czy gałąź jest skonfigurowana przy użyciu poprawnego zdalnego pilota:
git branch -vv
źródło
git branch --set-upstream-to myfork
i dostałem błąd:> błąd: nieznana opcja `set-upstream-to 'Korzystam z git 1.7.9git remote set-url origin PATH_TO_REMOTE
)git branch -u <remotename>/<branch>
pracował dla mnie. Polecenie zostało uruchomione przy zaznaczonym lokalnym oddziale będącym przedmiotem zainteresowania. Zobacz „Śledzenie oddziałów” w git-scm.com/book/it/v2/Git-Branching-Remote-Branchesgit remote -v
lubgit remote --verbose
.-vv
„S extra v jest zbędny.Praca z Git 2.3.2 ...
Teraz
status
,push
ipull
są skierowane domyfork
zdalnegoźródło
pull
.Za pomocą tego polecenia możesz łatwo zmienić domyślny pilot dla oddziałów jednocześnie
źródło
Jeśli to zrobiłeś
git push origin -u localBranchName:remoteBranchName
i po sekwencjachgit push
poleceń pojawią się błędy, które wtedy nie istnieją, wykonaj następujące kroki:git remote -v
Sprawdź, czy jest jakiś pilot, który mnie nie obchodzi. Usuń je za pomocą
git remote remove 'name'
git config --edit
Poszukaj możliwych oznak starego / nieistniejącego pilota. Poszukaj
pushdefault
:Zaktualizuj
oldremote
wartość i zapisz.git push
powinien działać teraz.źródło
-u
, używającgit push
innego pilota ze względu na pamięć mięśni. To sprawia, że dany pilot jest domyślny, cofnięcie go za pomocągit config --edit
(lub ponowne naciśnięcie i ustawienie nowego pilota) rozwiązało problem.Tylko wyjaśnienie (za pomocą gita w wersji 1.7.9.5 na Ubuntu 12.04):
Git doda / usunie piloty. Są to zdalne wystąpienia git z podłączonym serwerem.
Następnie możesz pobrać repozytorium git w następujący sposób:
Wygląda na to, że tworzy gałąź o nazwie „myremote”, jednak pilot dla gałęzi nie jest ustawiany automatycznie. Aby to zrobić, musisz wykonać następujące czynności:
Najpierw sprawdź, czy masz ten problem, tj
Powinieneś zobaczyć coś takiego:
Jeśli widzisz
branch.myremote.remote=.
, powinieneś kontynuować:Powinieneś teraz być na bieżąco ze zdalnym repozytorium, a twoje ściągnięcia / wypychania powinny być powiązane z odpowiednim pilotem. W ten sposób możesz przełączać piloty dla poszczególnych oddziałów . [Notatka 1]
Zgodnie z oficjalną dokumentacją konfiguracji Git , możesz ustawić domyślną gałąź push (po prostu wyszukaj remote.pushdefault na tej stronie), jednak pamiętaj, że nie wpłynie to na repozytoria / gałęzie, które już istnieją, więc będzie działać, ale tylko dla nowych repozytoriów / oddziałów. Powinieneś pamiętać, że
--global
ustawi specyficzne dla użytkownika wartości domyślne repozytorium (~ / .gitconfig),--system
ustawi ogólnosystemowe wartości domyślne repozytorium (/ etc / gitconfig), a żadna flaga nie ustawi opcji konfiguracji dla bieżącego repozytorium (./.gitconfig).Należy również zauważyć, że opcja konfiguracji push.default służy do konfigurowania zachowania specyfikacji , a nie zachowania zdalnego .
[1]:
git branch --set-upstream myotherremote
zwykle działałby tutaj, jednak git będzie narzekał, że jeśli niegit branch --set-upstream myremote
zostanie użyty, nie ustawi gałęzi jako własnego pilota . Uważam jednak, że jest to nieprawidłowe zachowanie.źródło
git config -l | grep myremote
możesz po prostu użyć:git config --get branch.myremote.remote
--get
zakładam szczególne zachowanie, zauważam, że istnieją inne sposoby ustawiania strumieni, ale zapewnia to sposób na znalezienie informacji bez polegania tylko na narzędziach git poprawny. Git nie jest doskonały, lepiej zrozumieć dane, co robi i mieć nadzieję, że jego wywołania będą działać poprawnie.Przydatne może być zajrzenie do
.git/config
repozytorium, wyświetli ono listę wszystkich pilotów, a także domyślnego pilota dla każdej gałęzina przykład.
możesz wprowadzić ręczne zmiany w tym pliku, aby usunąć niechcianego pilota, lub zaktualizować domyślne piloty dla różnych gałęzi
źródło
Kolejną techniką, którą właśnie znalazłem w celu rozwiązania tego problemu (nawet jeśli najpierw usunąłem pochodzenie, co wydaje się błędem), jest bezpośrednie manipulowanie git config:
źródło
git remote set-url origin PATH_TO_REMOTE
)Bardzo prosto i łącząc niektóre świetne komentarze tutaj wraz z moimi własnymi badaniami na ten temat.
Najpierw sprawdź lokalny oddział, który chcesz powiązać ze zdalnym oddziałem:
Kolejny:
gdzie:
Powinieneś otrzymać wiadomość:
źródło
W moim przypadku naprawiłem: * uruchom
git config --edit
* W pliku konfiguracyjnym git:źródło
git remote set-url --push origin
powinien działać, jak wspomniałeś, ale musisz jawnie podać adres URL zamiast alternatywnej nazwy zdalnej, npMożesz potwierdzić, czy to zadziałało, wykonując
git remote -v
. Na przykładźródło