Git pull a certain branch from GitHub
Mam projekt z wieloma gałęziami. Pchałem je do GitHub, a teraz, gdy ktoś inny nad nimi pracuje, muszę zrobić pull z Githuba. To działa dobrze w Mistrzu. Ale powiedzmy, że mam oddział xyz. Jak mogę pobrać gałąź xyz z GitHub i połączyć ją z gałąź xyz na moim localhost?
Mam tu swoją odpowiedź: Push and pull branches in Git
Ale dostaję błąd"! [odrzucony] "i coś o" non fast naprzód".
Jakieś sugestie?
10 answers
Ale dostaję błąd"! [odrzucony] "i coś o" non fast forward "
To dlatego, że Git nie może scalić zmian z gałęzi do aktualnego Mastera. Załóżmy, że sprawdziłeś gałąź master
i chcesz połączyć się w zdalnej gałęzi other-branch
. Kiedy to robisz:
$ git pull origin other-branch
Git w zasadzie robi to:
$ git fetch origin other-branch && git merge other-branch
To znaczy pull
jest po prostu fetch
, po którym następuje merge
. Jednakże, gdy pull
-ing, Git będzie tylko scalał other-branch
if it can performing a fast-forward merge. A fast-forward merge to połączenie, w którym głowa gałęzi, do której próbujesz się połączyć, jest bezpośrednim potomkiem głowy gałęzi, do której chcesz się połączyć. Na przykład, jeśli masz to drzewo historii, scalenie other-branch
spowoduje szybkie scalanie do przodu:
O-O-O-O-O-O
^ ^
master other-branch
To jednak Nie będzie fast-forward merge:
v master
O-O-O
\
\-O-O-O-O
^ other-branch
Aby rozwiązać swój problem, najpierw Pobierz oddział zdalny:
$ git fetch origin other-branch
Następnie połącz go z bieżącą gałęzią (zakładam, że jest to master
) i napraw wszelkie konflikty scalania:
$ git merge origin/other-branch
# Fix merge conflicts, if they occur
# Add merge conflict fixes
$ git commit # And commit the merge!
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
2009-11-10 19:17:47
Po prostu śledź swoje zdalne gałęzie wprost, a proste git pull
zrobi to, co chcesz:
git branch -f remote_branch_name origin/remote_branch_name
git checkout remote_branch_name
Lub jeszcze bardziej pasuje do dokumentacji Githuba na temat forkingu :
git branch -f new_local_branch_name upstream/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
2016-02-12 22:26:59
Możesz przeciągnąć gałąź do gałęzi za pomocą następujących poleceń.
git pull {repo} {remotebranchname}:{localbranchname}
git pull origin xyz:xyz
Kiedy znajdujesz się na gałęzi master, Możesz również najpierw sprawdzić gałąź taką jak:
git checkout -b xyz
Tworzy to nową gałąź," xyz", z master i bezpośrednio ją sprawdza.
Potem robisz:
git pull origin xyz
To przyciąga nową gałąź do twojej lokalnej gałęzi.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
2016-02-12 22:25:15
Najlepszy sposób to:
git checkout -b <new_branch> <remote repo name>/<new_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
2016-02-12 22:27:40
Nie jestem pewien, czy w pełni rozumiem problem, ale wyciąganie istniejącej gałęzi odbywa się w ten sposób (przynajmniej u mnie działa:)
git pull origin BRANCH
Zakłada się, że lokalna gałąź jest utworzona z origin / 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
2016-02-12 22:23:03
git fetch
pobierze najnowszą listę oddziałów.
Teraz możesz git checkout MyNewBranch
Zrobione:)
aby uzyskać więcej informacji zobacz dokumenty: git fetch
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-27 05:38:00
To pomogło mi uzyskać zdalną gałąź przed połączeniem jej z innym:
git fetch repo xyz:xyz
git checkout xyz
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
2016-02-15 21:25:49
git pull <gitreponame> <branchname>
Zazwyczaj jeśli do Twojego kodu przypisane jest tylko repo, to gitreponame będzie origin.
Jeśli pracujesz na dwóch repo jak jeden jest lokalny a drugi dla zdalnego jak możesz sprawdzić listę repo z git remote-v . pokazuje, ile repo jest przypisanych do bieżącego kodu.
Nazwa gałęzi powinna istnieć w odpowiedniej nazwie gitreponame.
Możesz użyć następujących dwóch poleceń, aby dodać lub usunąć repo
git remote add <gitreponame> <repourl>
git remote remove <gitreponame>
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-08 04:27:00
Możesz również zrobić
git pull -r origin master
Fix merge conflicts if any
git rebase --continue
-r oznacza rebase. Spowoduje to utworzenie struktury gałęzi z
v master
o-o-o-o-o
\o-o-o
^ other branch
Do
v master
o-o-o-o-o-o-o-o
^ other branch
To doprowadzi do czystszej historii.
Uwaga: jeśli już przesunąłeś swoją gałąź other - do origin (lub jakiegokolwiek innego pilota), być może będziesz musiał wymusić wypchnięcie gałęzi po rebase.
git push -f origin other-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
2017-08-28 09:10:46
Zrobiłem
git branch -f new_local_branch_name origin/remote_branch_name
Zamiast
git branch -f new_local_branch_name upstream/remote_branch_name
Zgodnie z sugestią @innaM.
Kiedy używałem wersji upstream, było napisane "fatal: not a valid object name: "upstream / remote_branch_name". Nie zrobiłem git fetch origin
zgodnie z sugestią komentarza, ale zamiast tego po prostu zamieniłem upstream
na origin
. Myślę, że są równoważne.
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-07-25 15:44:58