programing

힘내 GitHub에서 특정 지점을 당겨

new-time 2020. 2. 9. 19:57
반응형

힘내 GitHub에서 특정 지점을 당겨


여러 지점이있는 프로젝트가 있습니다. 나는 그것들을

GitHub

로 밀어 넣었고 , 이제 다른 누군가가 프로젝트를 진행하고 있으므로 GitHub에서 지점을 가져와야합니다. 마스터에서 잘 작동합니다. 그러나 누군가가 지점을 만들었다 고 말하십시오

xyz

.

xyz

GitHub에서 분기 가져 와서 분기

xyz

병합하려면

localhost

어떻게해야합니까?나는 실제로 여기에 내 대답이 있습니다 :

힘내에서 가지를 밀고 당기십시오

그러나 "! [거부 됨]"오류와 "비 빨리 감기"에 대한 오류가 발생합니다.어떤 제안?


하지만 "! [거부 됨]"오류와 "빨리 감기가 아닌"문제가 발생합니다.

Git이 브랜치의 변경 사항을 현재 마스터로 병합 할 수 없기 때문입니다. branch를 체크 아웃

master

하고 원격 branch에 병합하려고 한다고 가정 해 봅시다

other-branch

. 이렇게하면 :

$ git pull origin other-branch 

힘내는 기본적으로 이것을하고 있습니다 :

$ git fetch origin other-branch && git merge other-branch 

즉, a

pull

fetch

뒤에옵니다

merge

. 그러나

pull

-ing 할 때 Git은 빨리 감기 병합을 수행 할 수있는 경우

에만

병합

other-branch 합니다

. 빨리 감기 병합은에 병합하려고하는 지점의 머리가되는 병합입니다 직접 하위 병합 할 지점의 머리. 예를 들어, 이력 트리가있는 경우 병합 하면 빨리 병합됩니다.

other-branch

 

O-O-O-O-O-O ^ ^ master other-branch 

그러나 이것은 빠른 병합

아닙니다

.

 v master O-O-O \ \-O-O-O-O ^ other-branch 

문제를 해결하려면 먼저 원격 브랜치를

가져 오십시오

.

$ git fetch origin other-branch 

그런 다음 현재 브랜치에 병합하고 (이것은 가정합니다

master

) 병합 충돌을 수정하십시오.

$ git merge origin/other-branch # Fix merge conflicts, if they occur # Add merge conflict fixes $ git commit # And commit the merge! 

원격 지점을 명시 적으로 추적하기 만하면

git pull

원하는대로 간단 하게 수행 할 수 있습니다.

git branch -f remote_branch_name origin/remote_branch_name git checkout remote_branch_name 

후자는 로컬 작업입니다.또는

포크에

대한 GitHub 문서에 더 적합합니다 .

git branch -f new_local_branch_name upstream/remote_branch_name 

다음 명령을 사용하여 분기를 분기로 당길 수 있습니다.

git pull :  git pull origin xyz:xyz 

마스터 브랜치에있을 때 먼저 다음과 같은 브랜치를 체크 아웃 할 수 있습니다.

git checkout -b xyz 

마스터에서 "xyz"라는 새 브랜치를 만들고 직접 체크 아웃합니다.그런 다음

git pull origin xyz 

새 지점을 로컬

xyz

지점으로 가져옵니다 .


가장 좋은 방법은 다음과 같습니다.

git checkout -b <new_branch> <remote repo name>/<new_branch> 

git fetch

최신 분기 목록을 가져옵니다.지금 당신은 할 수 있습니다

git checkout MyNewBranch

완료 :)


자세한 내용은 문서를 참조하십시오 : git fetch


나는 문제를 완전히 이해하고 있는지 확실하지 않지만 기존 지점을 당기는 것은 다음과 같이 수행됩니다 (적어도 나를 위해 작동합니다 :)

git pull origin BRANCH 

이는 로컬 지점이 원산지 / 지점에서 생성되었다고 가정 한 것입니다.


이것은 다른 지점으로 병합하기 전에 원격 지점을 얻는 데 도움이되었습니다.

git fetch repo xyz:xyz git checkout xyz 

git pull <gitreponame> <branchname> 

일반적으로 코드에 리포지토리 만 할당 된 경우 gitreponame은 origin이됩니다.하나는 로컬이고 다른 하나는 remote와 같은 두 개의 저장소에서 작업하는 경우

git remote -v

에서 저장소 목록을 확인할 수 있습니다 . 현재 코드에 얼마나 많은 리포지토리가 할당되어 있는지 보여줍니다.BranchName은 해당 gitreponame에 존재해야합니다.다음 두 명령을 사용하여 repo를 추가하거나 제거 할 수 있습니다

git remote add <gitreponame> <repourl> git remote remove <gitreponame> 

간단히 말하면, GitHub에서 분기를 가져 오려면

the_branch_I_want

:

git fetch origin git branch -f the_branch_I_want origin/the_branch_I_want git checkout the_branch_I_want 

당신은 또한 할 수 있습니다

git pull -r origin master 

병합 충돌이있는 경우 수정

git rebase --continue 

-r은 rebase 용입니다. 이것은 당신에게 분기 구조를 만들 것입니다

 v master  o-o-o-o-o \o-o-o ^ other branch 

 v master  o-o-o-o-o-o-o-o ^ other branch 

이것은 더 깨끗한 역사로 이어질 것입니다. 참고 : 이미 다른 지점을 원점 (또는 다른 원격지)으로 밀었을 경우 리베이스 후 지점을 강제로 밀어야 할 수도 있습니다.

git push -f origin other-branch 

내가 했어

git branch -f new_local_branch_name origin/remote_branch_name 

대신에

git branch -f new_local_branch_name upstream/remote_branch_name 

@innaM이 제안한대로. 업스트림 버전을 사용할 때 '치명적 : 유효한 개체 이름이 아닙니다 :'upstream / remote_branch_name '. 나는

git fetch origin

제안 된 의견으로 하지 않고 단순히로 대체

upstream

했습니다

origin

. 나는 그들이 동등한 것 같아요.참고 URL :

https://stackoverflow.com/questions/1709177/git-pull-a-certain-branch-from-github



도움이 되겠다면 ↓↓↓ 배너 한번만 클릭 해주시면 감사합니다 ^^

반응형