Git fetch Remote branch
Mój kolega i ja pracujemy nad tym samym repozytorium rozgałęziliśmy je na dwie gałęzie, każda technicznie dla różnych projektów, ale mają one podobieństwa, Więc czasami będziemy chcieli wrócić do * master z gałęzi.
Mam jednak gałąź. Moje pytanie brzmi, jak mój kolega może dokładnie wyciągnąć tę gałąź? Agit clone
repo nie wydaje się tworzyć gałęzie lokalnie dla niego, choć widzę je na żywo po naciśnięciu na mojej stronie.
Także, kiedy początkowo tworzyłem gałąź, zrobiłem -b checkout
. Nie jesteś pewien, czy to robi różnicę?
iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master
git fetch origin discover
git checkout discover
To są polecenia, które wykonałem. Ale to na pewno nie działa. Chcę być w stanie sprawdzić tę gałąź, a następnie popchnąć i zatwierdzić tylko zmiany gałęzi od różnych współpracowników lub stacji roboczych. 25 answers
Musisz utworzyć lokalną gałąź, która śledzi gałąź zdalną. Poniższe polecenie utworzy lokalną gałąź o nazwie daves_branch , śledząc zdalną gałąź origin/daves_branch . Po wypchnięciu zmian zdalna gałąź zostanie zaktualizowana.
Dla większości wersji git:
git checkout --track origin/daves_branch
--track
jest skrótem od git checkout -b [branch] [remotename]/[branch]
gdzie [remotename] jest origin w tym przypadku, a [branch] jest dwa razy to samo, daves_branch w tym przypadku.
Dla git 1.5.6.5 potrzebowałeś tego:
git checkout --track -b daves_branch origin/daves_branch
Dla git 1.7.2.3 i wyższych jest to wystarczające (może zaczęło się wcześniej, ale jest to najwcześniejsze potwierdzenie, jakie udało mi się znaleźć szybko):
git checkout daves_branch
Zauważ, że w ostatnich wersjach Gita, to polecenie nie utworzy lokalnej gałęzi i spowoduje, że stan zostanie odłączony. Jeśli chcesz mieć lokalną gałąź, użyj opcji --track
.
Szczegóły tutaj: http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-05 16:10:03
Użyłem fetch
następnie checkout
...
git fetch <remote> <rbranch>:<lbranch>
git checkout <lbranch>
... gdzie <rbranch>
jest zdalną gałęzią lub źródłowym ref i <lbranch>
jest jeszcze nieistniejącym lokalnym oddziałem lub docelowym ref, który chcesz śledzić i który prawdopodobnie chcesz nazwać tak samo jak zdalna gałąź lub źródło ref. Jest to wyjaśnione w opcje w wyjaśnieniu <refspec>
.
Git jest tak inteligentny, że automatycznie wykonuje pierwsze polecenie, jeśli tab po kilku pierwszych literach zdalnej gałęzi. IE: nie muszę nawet nazywać lokalnej gałęzi, Git automatycznie kopiuje dla mnie nazwę zdalnej gałęzi. Dzięki Git!
Również jako odpowiedź w tym podobnym poście pokazuje, że jeśli nie nazwiesz lokalnej gałęzi w fetch
, nadal możesz ją utworzyć, gdy ją sprawdzisz, używając znacznika -b
. IE: git fetch <remote> <branch>
po którym następuje git checkout -b <branch> <remote>/<branch>
robi dokładnie to samo, co moja początkowa odpowiedź. I ewidentnie jeśli twój repo posiada tylko jeden zdalny, wtedy możesz po prostu zrobić git checkout <branch>
po fetch
i utworzy dla Ciebie lokalną gałąź. NP: właśnie sklonowałeś repo i chcesz sprawdzić dodatkowe gałęzie z pilota.
Uważam, że część dokumentacji fetch
mogła zostać skopiowana dosłownie z pull
. W szczególności sekcja <refspec>
w opcje jest taka sama. Nie wierzę jednak, że fetch
kiedykolwiekmerge
, tak, że jeśli opuścisz strona docelowa dwukropka pusta fetch
nie powinno nic robić .
Uwaga: to git fetch <remote> <refspec>
jest skrótem od git fetch <remote> <refspec>:
, które zatem nic nie robi, ale git fetch <remote> <tag>
jest tym samym, co git fetch <remote> <tag>:<tag>
, które powinno skopiować zdalny <tag>
lokalnie.
Myślę, że jest to pomocne tylko wtedy, gdy chcesz skopiować zdalną gałąź lokalnie, ale niekoniecznie od razu ją sprawdzić. W przeciwnym razie użyłbym zaakceptowanej odpowiedzi powyżej , która została szczegółowo wyjaśniona w pierwszej części opis kasy i później w sekcji opcje pod wyjaśnieniem --track
, ponieważ jest to 1-liner. Cóż... coś w rodzaju 1-linera, ponieważ ty byś nadal musiał najpierw uruchomić git fetch <remote>
.
FYI: kolejność <refspecs>
(źródło:destination) wyjaśnia dziwaczną metodę pre Git-1.7 Dla usuwania zdalnych gałęzi . IE: nic nie wepchnąć do docelowego refspec.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:58
Jeśli próbujesz "wymeldować" nową zdalną gałąź (która istnieje tylko na zdalnym, ale nie lokalnie), oto czego potrzebujesz:
git fetch origin
git checkout --track origin/<remote_branch_name>
Zakłada się, że chcesz pobrać z origin . Jeśli nie, zastąp origin przez swoją remote nazwę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-06 07:24:54
Do kasy myBranch, który istnieje zdalnie, a nie lokalnie - to mi się udało:
git fetch --all
git checkout myBranch
Dostałem tę wiadomość:
Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-12 03:36:22
Użyj git branch -a
(zarówno lokalne, jak i zdalne gałęzie) lub git branch -r
(tylko zdalne gałęzie), aby zobaczyć wszystkie piloty i ich gałęzie. Następnie możesz wykonać git checkout -t remotes/repo/branch
do zdalnego i utworzyć lokalną gałąź.
Istnieje również polecenie git LS-remote, aby zobaczyć wszystkie refy i Tagi dla tego pilota.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-25 13:01:32
Tytuł i pytanie są pomieszane:
- Git fetch Remote branch
- jak mój kolega może wyciągnąć tę gałąź konkretnie.
Jeśli pytanie brzmi jak uzyskać zdalną gałąź do pracy lub jak git checkout zdalnej gałęzi, prostszym rozwiązaniem jest:
Z git (>=1.6.6) możesz użyć:
git checkout <branch_name>
Jeśli lokalny <branch_name>
nie został znaleziony, ale istnieje gałąź śledząca dokładnie w jednym zdalnym o pasującej nazwie, traktuj jako odpowiednik:
git checkout -b <branch_name> --track <remote>/<branch_name>
Zobacz dokumentację dla git checkout
Dla Twojego przyjaciela:
$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-31 10:53:41
git checkout -b serverfix origin/serverfix
Jest to dość powszechna operacja, którą git dostarcza skrótu --track:
git checkout --track origin/serverfix
W rzeczywistości jest to tak powszechne, że istnieje nawet skrót do tego skrótu. Jeśli nazwa gałęzi, którą próbujesz zrealizować zamówienie (a) nie istnieje i (B) dokładnie pasuje do nazwy tylko jednego pilota, Git utworzy dla Ciebie gałąź śledzącą:
git checkout serverfix
Aby skonfigurować lokalną gałąź o innej nazwie niż zdalna, możesz łatwo użyć pierwszej wersji z inną lokalną gałąź Nazwa:
git checkout -b sf origin/serverfix
Teraz, twój lokalny oddział SF automatycznie pobierze z origin / serverfix.
Pro Git 2nd Edition, napisany przez Scotta Chacona i Bena Strauba (cut for readability)Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-18 14:13:14
Tym prostym poleceniem:
git checkout -b 'your_branch' origin/'remote branch'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-12 19:13:05
git fetch
git branch -r
git checkout <branch_name>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-04 21:13:32
Możesz pobrać i sprawdzić zdalną gałąź za jednym razem: -
git fetch && git checkout the-branch-name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-25 06:43:02
Wpisałem
git checkout <branch_name>
I dostał
Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-10 22:43:19
Najprostszy sposób, przynajmniej dla mnie:
git fetch origin <branchName>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-20 01:00:14
Czasami jesteś proszony, aby nie bawić się gałąź master i pracować tylko gałąź zdalną (tak jak zostałem poproszony). Więc wszystko czego potrzebujesz to zdalna gałąź.
Aby sklonować zdalną gałąź samodzielnie (bez master), zrób to]}git clone url --branch remote_branch_name
Gdzie, remote_branch_name jest nazwą zdalnej gałęzi
Na przykład,
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15
To upewni się, że sklonujesz zdalną gałąź do lokalnej gałęzi z nazwą zdalnej gałęzi.
Teraz, jeśli popełnisz swój code I push, kod zostanie przesłany do tej gałęzi sam.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-06 05:11:05
git fetch --all & git checkout <branch name>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-20 00:42:13
Powiedzmy, że twój pilot to [email protected] i chcesz jego gałąź random_branch. Proces powinien być następujący:
-
Najpierw sprawdź listę swoich pilotów przez
git remote -v
-
Jeśli nie masz [email protected] remote w wyniku powyższego polecenia, dodałbyś go przez
git remote add xyz [email protected]
- Teraz możesz pobrać zawartość tego pilota przez
git fetch xyz
- Teraz sprawdź oddział tego pilota przez
git checkout -b my_copy_random_branch xyz/random_branch
- Sprawdź listę gałęzi według
git branch -a
Lokalna gałąź my_copy_random_branch będzie śledzić gałąź random_branch Twojego pilota.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-06 16:59:13
git fetch && git checkout <your friend's branch name>
should do the trick
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-25 11:37:50
Kroki są następujące;
git fetch origin
lubgit fetch --all
, spowoduje to pobranie wszystkich zdalnych gałęzi do twojej lokalnej, a następnie jest to druga opcja, którą możesz przetworzyć.git checkout --track origin/<The_remote_branch you want to switch over>
Następnie pracuj nad tą gałęzią i możesz sprawdzić, czy jesteś na tej gałęzi, czy nie, wpisując
git branch
Wyświetla gałąź, w której aktualnie się znajdujesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-26 10:09:11
Jeśli już znasz swoją zdalną gałąź tak...
git remote
=> One
=> Two
I znasz nazwę oddziału, który chcesz sprawdzić ex. br1.2.3.4 Następnie wykonaj
git fetch One
=> returns all meta data of remote i.e. the branch name in question.
Wszystko, co pozostało, to sprawdzić Oddział
git checkout br.1.2.3.4
Potem zrób z niego nowe gałęzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-26 17:51:26
Sprawdź swoje .git/config
, w szczególności jakie śledzenie jest obecne na pobierz dla tego pilota.
[remote "randomRemote"]
url = [email protected]:someUser/someRepo.git
fetch = +refs/heads/*:refs/remotes/randomRemote/*
Jeśli heads/*
wskazuje na randomRemote/*
, to po uruchomieniu git fetch randomRemote
pobierze wszystkie gałęzie.
Potem możesz po prostu sprawdzić ten oddział.
Inaczej,
Musisz dodać zdalne gałęzie do śledzenia za pomocą tego. Sprawdź swój
.git/config
po uruchomieniu tego. Zrozumiesz. git remote set-branches --add randomRemote randomBranchRun
git fetch randomRemote
. To ściągnie zdalną gałąź.Teraz możesz biec
git checkout randomBranch
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-01 14:29:24
Używasz 'git pull', aby trzymać swoje gałęzie osobno. Użyję rzeczywistych nazw repo i gałęzi, aby pomóc, ponieważ' lbranch 'i' rbranch ' jest trudny do rozszyfrowania.
Użyjmy:
Ty, lub jakikolwiek kolega, możesz to uruchomić, aby wyciągnąć tylko swoją gałąź, bez względu na to, ile jest gałęzi:
git init git pull [email protected]:myteam/tlc daves_branch:refs/remotes/origin/daves_branch
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-22 21:10:02
Po prostu spróbuj
$git pull origin your_branch_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-12 20:44:31
Jeśli masz repozytorium sklonowane za pomocą --depth 1, wiele z wymienionych poleceń nie będzie działać. Na przykład patrz tutaj
% git clone --depth 1 https://github.com/repo/code
Cloning into 'code'...
cd code
remote: Counting objects: 1778, done.
remote: Compressing objects: 100% (1105/1105), done.
remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0
Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
Checking out files: 100% (1215/1215), done.
% cd code
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
% git fetch origin other_branch
remote: Counting objects: 47289, done.
remote: Compressing objects: 100% (15906/15906), done.
remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0
Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done.
Resolving deltas: 100% (30151/30151), completed with 362 local objects.
From https://github.com/repo/code
* branch other_branch-> FETCH_HEAD
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
%
W tym przypadku powtórzyłbym repo, ale być może istnieją inne techniki np. git shallow clone (Clone --depth) misses remote branches
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-24 21:21:03
Proste polecenie - "Git checkout remote_branch_name" pomoże Ci stworzyć lokalną gałąź, która ma wszystkie zmiany w gałęzi zdalnej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-19 12:34:41
git branch <name> --track origin/<name>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-11 18:02:34
Pomogło mi
1) Aby wyświetlić wszystkie dostępne zdalne gałęzie (np. 'remote-branch-name')
git branch -r
2) Utwórz lokalną gałąź używając nazwy zdalnej gałęzi
git fetch && git checkout 'remote-branch-name'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-17 02:16:14