Pytanie Jak mogę sprawdzić zdalny oddział Git?


Ktoś pchnął gałąź zwaną test z git push origin test do wspólnego repozytorium. Widzę gałąź z git branch -r.

Teraz próbuję sprawdzić pilota test gałąź.

Próbowałem:

  • git checkout test który nic nie robi

  • git checkout origin/test daje * (no branch). Co jest mylące. Jak mogę być w "bez oddziału"?

Jak mogę sprawdzić zdalny oddział Git?


5316
2017-11-23 14:23


pochodzenie


@inger Ale nie zawiera możliwości zmiany nazwy nowego oddziału lokalnego (jeśli chcesz - skonfigurować później wersję i zachować spójność nazw) - fachexot
Myślę, że ten wątek nie jest pomocny. Nic nie działa, pierwotne pytanie zostało utracone w wielu odpowiedziach. Czytałem każde słowo, próbowałem wszystkiego poniżej i nie miałem pojęcia, jak zrobić to, co OP chce zrobić. - Tony Ennis
Polecenia Git nie są intuicyjne, dodaj zmiany wprowadzone w najnowszych wersjach do miksu i masz tę stronę ... - Christophe Roussy
Czuję, że biorę szalone pigułki. Próbuję sprawdzić oddział od upstream, nie tylko origin, a każda zalecana odpowiedź nie robi niczego zdalnie pomocnego (kalambur). EDYTOWAĆ - przepraszam, mnogość sugestii zawartych w dwóch pierwszych odpowiedziach była bezużyteczna; Trzeci (git branch test origin/test) to działa. Cieszę się, że najlepsze 2 mają 20 razy więcej głosów ... - dwanderson
Może masz plik o nazwie "test" w swoim drzewie pracy, zobacz stackoverflow.com/a/45006389/792416 dla szczegółów. - oldman


Odpowiedzi:


Aktualizacja

Odpowiedź Jakuba faktycznie poprawia się na tym. W wersji Git ≥ 1.6.6 możesz po prostu:

git fetch
git checkout test

(Użytkownik masukomi wskazuje poniżej git checkout test NIE będzie działać w nowoczesnym git, jeśli masz wiele pilotów. W tym przypadku użyj git checkout -b test <name of remote>/test).

Stara odpowiedź

Zanim zaczniesz działać lokalnie w odległym oddziale, musisz pobrać go tak, jak podano w odpowiedziach poniżej.

Aby pobrać oddział, wystarczy:

git fetch origin

Spowoduje to pobranie dla ciebie wszystkich odległych gałęzi. Możesz zobaczyć oddziały dostępne do kasy z:

git branch -v -a

Mając pod ręką odległe oddziały, musisz teraz sprawdzić oddział, który cię interesuje, podając lokalną kopię roboczą:

git checkout -b test origin/test

7366
2017-11-23 14:26



Aby rozwinąć to: git nie pozwala ci pracować na czyjejś gałęzi. Możesz pracować tylko na własną rękę. Więc jeśli chcesz dodać do innej gałęzi, musisz stworzyć własną "kopię" tej gałęzi, co jest tym, co robi powyższe polecenie (cóż, tworzy twoją gałąź i ją sprawdza). - Dan Moulding
Jeśli jest to nowa zdalna gałąź, być może trzeba git fetch przed zrobieniem tego, aby git był świadomy origin/test - Neil Sarkar
... i zrobiłbyś to git fetch origin test - Andrew
Błąd: "git checkout: aktualizowanie ścieżek jest niekompatybilne z przełączaniem gałęzi. Czy masz zamiar dokonać kasy origin/test które nie mogą zostać rozwiązane jako zatwierdzenie? " - Xeoncross
git checkout test NIE będzie działać w nowoczesnym git jeśli masz wiele pilotów zdalnego sterowania, które mają tę samą nazwę oddziału. Nie wie, którego użyć. - masukomi


Dygresja: Z nowoczesnym Git (> = 1.6.6), jesteś w stanie używać tylko

git checkout test

(zauważ, że jest to "test", a nie "pochodzenie / test"), aby wykonać magiczne DWIM-meryfikuj i utwórz dla ciebie lokalny "test", dla którego wcześniejszy byłby "początek / test" gałęzi zdalnego śledzenia.


The * (no branch) w git branch Dane wyjściowe oznaczają, że użytkownik znajduje się w nienazwanej gałęzi w stanie "odłączonego HEAD" (HEAD wskazuje bezpośrednio na zatwierdzenie i nie jest symbolicznym odnośnikiem do jakiegoś lokalnego oddziału). Jeśli wykonałeś pewne zatwierdzenia w tej nienazwanej gałęzi, zawsze możesz utworzyć lokalną gałąź przy bieżącym zatwierdzeniu:

git checkout -b test HEAD

1092
2017-11-24 00:17



Nie jest zaskakujące, ale ta wersja została wydana w ciągu ostatnich kilku lat - wiedząc, że ta składnia może zaoszczędzić sporo czasu, ponieważ wciąż istnieje wiele starych wątków dokumentacji i komentarzy, które sugerują starszą metodę wykonania tego. - Curtis
"modern git" - dla płyty, (w przybliżeniu) jakiej wersji się powołujesz? Czasami musimy pracować na systemach z starszymi dystrybucjami. - Craig McQueen
"nowoczesny git" w tym kontekście jest git 1.6.6 - Bobby Norton
@aidan Jeśli otrzymasz odpowiedź typu error: pathspec 'branch_name' did not match any file(s) known to git. następnie powinieneś najpierw pobrać git. - Dennis
Używanie git w wersji 1.8.3.msysgit.0 i to nie działa dla mnie - nie pasuje do żadnego z plików znanych git - Zrobiłem wiele przydziałów git - PandaWood


W takim przypadku prawdopodobnie chcesz utworzyć lokalny test gałąź, która śledzi pilota test gałąź:

$ git branch test origin/test

We wcześniejszych wersjach git, potrzebujesz wyraźnego --track opcja, ale jest to teraz ustawienie domyślne, gdy rozgałęziamy gałąź zdalną.


478
2017-11-23 14:27



Spowoduje to utworzenie lokalnego oddziału bez przełączania się na niego. - Alex.Designworks
Chociaż mam fatalne: Niejednoznaczna nazwa obiektu: 'origin / dev' - gdzie gałąź 'dev' na początku zdecydowanie istnieje - ale przypadkowo utworzyłem gałąź o nazwie "origin / dev" na moim komputerze (w moich wcześniejszych głupich próbach żeby to naprawić, bez wątpienia) ... ouch - PandaWood
Daje mi to błąd błędu: nie udało się przesłać niektórych informacji do podpowiedzi: aktualizacje zostały odrzucone, ponieważ podpowiedzi od gałęzi znajdują się za wskazówką zdalną: odpowiednik. Sprawdź tę gałąź i połącz wskazówkę zmiany zdalnej: (np. "Git pull") przed ponownym naciśnięciem. podpowiedź: zobacz "Notatka na temat fast-forwardów" w "git push --help", by poznać szczegóły. - pal4life
git branch test pracuje dla mnie - Isaac Pak


Przyjęta odpowiedź nie działa dla ciebie?

Podczas gdy pierwsza i wybrana odpowiedź jest technicznie poprawny, istnieje możliwość, że nie pobrałeś jeszcze wszystkich obiektów i referencji ze zdalnego repozytorium. W takim przypadku pojawi się następujący błąd:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: aktualizowanie ścieżek jest niezgodne z przełączaniem gałęzi.
  Czy chcesz sprawdzić "origin / remote_branch", które nie mogą zostać rozwiązane jako commit?

Rozwiązanie

Jeśli otrzymasz tę wiadomość, musisz najpierw wykonać git fetch origin gdzie origin to nazwa zdalnego repozytorium przed uruchomieniem git checkout remote_branch. Oto pełny przykład z odpowiedziami:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Jak widać, działa git fetch origin pobrano wszystkie odległe gałęzie, których jeszcze nie skonfigurowaliśmy do śledzenia na naszym lokalnym komputerze. Stamtąd, ponieważ mamy teraz ref do zdalnego oddziału, możemy po prostu uruchomić git checkout remote_branch i zdobędziemy korzyści zdalnego śledzenia.


395
2017-12-07 20:52



Dodam notatkę, jeśli masz lokalny oddział: Upewnij się, że skojarzyłeś to ze zdalnym repo przy użyciu "git remote add origin [the_path_to_your_repo / repo_name.git]". Następnie użyj "git fetch origin", gdzie "pochodzenie" oznacza repozytorium pochodzenia, z którym się skojarzyłeś. - elliotrock
git checkout -b newbranch działa również doskonale do 1-etapowego tworzenia i kasowania nowego oddziału w oparciu o bieżący oddział. - Linus
Myślę, że jest to najbardziej aktualne (utrzymuje zmianę @ @!!)! Git 2.5.5 Znalazłem jedyny sposób, aby to zrobić widzieć odległe gałęzie były git ls-remote a jedynym sposobem, aby faktycznie go użyć, jest git checkout -b [branch] --track [remote/branch]...i to jest po  git pull [remote] [branch] pracował. Oznacza to, że faktycznie wyciągnął cały oddział, ale nadal go nie wymieniał. - delicateLatticeworkFever
a kiedy ta odpowiedź też nie działa, zobacz ten. - eis


Próbowałem powyższego rozwiązania, ale nie działało. Spróbuj tego, działa:

git fetch origin 'remote_branch':'local_branch_name'

Spowoduje to pobranie oddziału zdalnego i utworzenie nowego oddziału lokalnego (jeśli nie istnieje) z nazwą local_branch_namei śledź zdalny w nim.


176
2017-10-18 05:55



To działało dla mnie, gdy ani Git Fetch Origin, ani Git Remote Update nie utworzył lokalnych oddziałów. Nie jestem pewien dlaczego. - Godsmith
To był najbardziej bezpośredni sposób na osiągnięcie tego, czego potrzebowałem, czyli użycie zdalnej gałęzi (a nie master) do stworzenia nowej gałęzi. - Roralee
Pracował płynnie, zwłaszcza gdy sklonował jedną gałąź z pilota z wieloma oddziałami. - Alex C
to działało również dla mnie, gdy zaakceptowane odpowiedzi i inne wysoko ocenione nie. Moja wersja git to 2.5.0 - pdepmcp
Czy ktoś ma jakiś pomysł, dlaczego to działa, gdy wszystko inne nie działa? (Jestem na git 2.13.0) - Nathan Arthur


To będzie DWIM dla zdalnego nie nazwanego pochodzenia (dokumentacja):

$ git checkout -t remote_name/remote_branch

Aby dodać nowego pilota, musisz najpierw wykonać następujące czynności:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Pierwsza mówi Gitowi, że pilot istnieje, a drugi otrzymuje zatwierdzenie.


100
2018-04-27 22:37





Posługiwać się:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

Inne odpowiedzi nie działają z nowoczesnym Gitem w mojej łagodnej sprawie. Być może będziesz musiał najpierw wyciągnąć, jeśli oddział zdalny jest nowy, ale nie sprawdziłem tego przypadku.


89
2018-02-21 10:58



Czy zdajesz sobie sprawę, że jest to ekstrakt z tego odpowiedź - Thomas Ayoub
Patrząc teraz na to, pokrywają się. Tylko moja jest zwięzła i mówi ci, co masz robić, a nie opowiadać. Zakładam, że może być bardziej przydatny, szczególnie w dzisiejszych wersjach git. Możesz go zatwierdzić, jeśli uważasz, że to zła odpowiedź. - matanster


Aby sklonować repozytorium Git, wykonaj następujące czynności:

git clone <either ssh url /http url>

Powyższe polecenie sprawdza wszystkie gałęzie, ale tylko master gałąź zostanie zainicjowana. Jeśli chcesz sprawdzić inne oddziały, wykonaj następujące czynności:

git checkout -t origin/future_branch (for example)

To polecenie sprawdza oddział zdalny, a nazwa lokalnego oddziału będzie taka sama jak zdalnej gałęzi.

Jeśli chcesz zastąpić nazwę lokalnego oddziału przy kasie:

git checkout -t -b enhancement origin/future_branch

Teraz masz lokalną nazwę oddziału enhancement, ale twoja nazwa zdalnego oddziału jest future_branch.

Dokumentacja


45
2018-01-21 10:04



git clone <albo ssh url / http url> - działa idealnie dla mnie - Kmeixner
Tak, masz rację. Dzięki za informacje, zaktualizuję je wkrótce @warvariuc - Madhan Ayyasamy
Jeśli pilot nie ma master, to nie zadziała. - polkovnikov.ph