Mój typowy przepływ pracy podczas pracy z gitem wygląda mniej więcej tak:
- utwórz lokalne repozytorium
- wykonaj jakąś pracę w tym repozytorium, dodaj / zmień pliki itp.
- zdecyduj, że chcę mieć centralną, zdalną lokalizację dla repozytorium i utwórz ją
- wypchnij wszystkie zatwierdzenia z mojego lokalnego repozytorium do tego nowego zdalnego repozytorium
Teraz jednak chcę mieć możliwość przechodzenia do push
iz pull
tego zdalnego repozytorium bez konieczności określania, gdzie wypycham lub skąd wyciągam; Chcę, aby mój lokalny mistrz śledził zdalnego mistrza.
Właściwy sposób to zrobić, nie jest jasne dla mnie, a ja byłem w stanie określić go z dokumentacji, mimo że naprawdę nie powinno być więcej niż jedno polecenie.
Ponieważ jest to coś, co robi się tylko raz na repozytorium, ogólnie zastosowałem jedno z dwóch prostych, ale hackerskich rozwiązań:
- używany
git clone
do tworzenia nowego lokalnego repozytorium i usuwał stare. Po sklonowaniu git, nowe repozytorium jest skonfigurowane do śledzenia pochodzenia. - ręcznie edytowane .git / config, aby utworzyć początek ścieżki głównej.
Myślę, że powinienem być w stanie uruchomić polecenie, prawdopodobnie jakąś formę git remote
skonfigurowania istniejącego repozytorium tak, aby ścieżka główna była zdalna. Czy ktoś może mi powiedzieć, co to za polecenie?
Odpowiedzi:
Użyj argumentu set upstream:
Uruchomienie powyższego polecenia aktualizuje poprawnie plik .git / config, a nawet weryfikuje z tym wyjściem:
„Nazwa oddziału lokalnego-oddziału skonfigurowana do śledzenia zdalnego oddziału nazwa-oddziału-zdalnego z miejsca pochodzenia.”
EDYCJA: Jak powiedział Martijn : "W wersji Git v1.8.0 --set-upstream jest przestarzałe. Zamiast tego użyj --set-upstream-to."
Zobacz to, aby uzyskać więcej informacji.
źródło
--set-upstream
jest przestarzały. Użyj--set-upstream-to
zamiast tego.git remote show <remote>
aby zobaczyć, które oddziały są śledzone przez twoje lokalne oddziałygit push -u
set upstream
konfiguruje mapowań bez faktycznego przekazania kodu? push wymusza wypchnięcie kodu w celu utworzenia mapowań. Może nie masz jeszcze kodu, ale chcesz utworzyć mapowanie?git help remote
powinien pokazać ci to, co powinieneś wiedzieć. Myślę, że chceszMożesz także ręcznie edytować .git / config, aby je skonfigurować.
źródło
Możesz również użyć tego, jeśli chcesz utworzyć nowy oddział lokalny do śledzenia zdalnego oddziału:
lub nawet lepiej:
źródło
W nowszych wersjach git możesz użyć
źródło
git branch --set-upstream BRANCH fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
The --set-upstream flag is deprecated and will be removed.
git branch master --set-upstream-to myupstream/master
źródło
Szybko do przodu trzy lata (zobacz, co tam zrobiłem :-)), próbowałem wyciągnąć nieśledzoną gałąź za pomocą Git Bash i otrzymałem
If you wish to set tracking information for this branch you can do so with:
Następujące rzeczy osiągnęły to, czego potrzebowałem:
$ git branch --set-upstream-to=origin/develop develop Branch 'develop' set up to track remote branch 'develop' from 'origin'.
źródło
Użyj tego polecenia:
git clone [<options>] [--] <repo> [<dir>]
źródło