programing

분기를 전환하지 않고 '깃 풀'하는 방법(깃 체크아웃)?

lastcode 2023. 5. 27. 11:33
반응형

분기를 전환하지 않고 '깃 풀'하는 방법(깃 체크아웃)?

나는 달리는 것에 익숙합니다.git pull그리고 제가 일하고 있는 지점 내의 다른 명령들.하지만 여러 명이 작업하는 개발 서버를 설치했기 때문에, 저는 그것을 할 때 지점을 바꿀 필요가 없습니다.

만약 내가 우리 모두가 사용하는 github 저장소에서 dev 서버의 기존 브랜치를 업데이트하고 싶다면, 어떻게 하는 올바른 방법은 무엇입니까?

git pull github branchname그것이 단순히 지점을 현재 지점으로 끌어들일 수 있습니까?

내가 찾을 수 있는 모든 Git 예제는 당신이 실행 중이라는 것을 나타내는 것 같습니다.checkout branchname먼저, 그리고 나서 당기기를 하세요.저는 그것을 피하려고 노력하고 있습니다.말씀드렸듯이, 이것은 기존 지점이고 저는 단지 최신 버전으로 업데이트하고 싶습니다.

저는 같은 것을 찾고 있었고 마침내 다른 스택 오버플로 게시물에서 저에게 맞는 답을 찾았습니다.체크아웃을 사용하지 않고 Git 분기 병합, 업데이트 및 풀링

기본적으로:

git fetch <remote> <srcBranch>:<destBranch>

예:

git fetch origin branchname:branchname

현재 기능 변경사항을 커밋하거나 저장해야 하는 경우와 마스터 브랜치 체크아웃과 같은 문제가 있었습니다.pull에서 로컬에 .master하여 "기능 분기"를 합니다.rebase마스터와 함께 최신 정보를 제공합니다.

이 모든 작업을 수행하려면 워크스페이스를 기능 분기에 유지하고 모든 전환을 방지해야 합니다.

git fetch origin master:master

git rebase master

그리고 그것은 묘기를 잘 부립니다.

체크아웃 없이 오리진 지점을 로컬 지점으로 업데이트하기 위해 다음 명령을 사용했습니다.git fetch 오리진 [BranchName]:[지점 이름]

다음 이후에 로컬 분기 팁을 다시 지정하려면git fetch추가 단계가 필요합니다.

보다 구체적으로, 깃허브 레포에 가지가 있다고 가정합니다.D,B,C,그리고.master(이 홀수 분기 이름 집합에 대한 이유는 잠시 후에 명확해질 것입니다.).devhost그리고 당신은 레포에 있습니다.origingithub repo는 github repo입니다.은 래그를 .git fetch 모든 업데이트합니다.origin/D,origin/B,origin/C,그리고.origin/master지금까지는 좋습니다.은 무슨요, 하만지금당일말원어다합니한고다를기나가언무지가신은▁but▁on.devhost지방 지점으로D,B,C 및/는master?

저는 다음과 같은 명백한 질문이 있습니다.

  1. 모든 지점의 팁을 업데이트하려는 이유는 무엇입니까?
  2. : 어가예지떤만약예(지가:▁(▁some▁branche▁what▁ifg,만)가 있다면 어떻게 합니까?B 원격(github) 리포가 부족한 커밋이 있습니까?병합해야 합니까, 재배치해야 합니까, 아니면...
  3. 만약 당신이 어떤 지점에 있다면요(예:C) 및 작업 디렉토리 및/또는 색인이 수정되었지만 커밋되지는 않았습니까?
  4. 원격 repo에 새 분기가 추가된 경우(A) 및/또는 분기가 삭제됨(D)?

(1)에 대한 답이 "왜냐하면devhost실제로는 개발을 위한 것이 아니라 로컬 미러를 사용하여 모든 실제 개발자가 Github에서 천천히 읽는 대신 Github repo를 빠르게 읽을 수 있도록 로컬 미러를 사용합니다. 그러면 "일반" repo가 아닌 "미러"를 사용할 수 있습니다.작업 디렉토리가 없어야 하며, 푸시도 허용하지 않아야 하며, 이 경우 나머지 질문은 그냥 사라집니다.

다른 답이 있으면 (2-4)가 문제가 됩니다.

어쨌든 원격 참조를 기반으로 로컬 참조를 업데이트하는 방법은 다음과 같습니다(실행 후).git fetch -p예):

for ref in $(git for-each-ref refs/remotes/origin/ --format '%(refname)'); do
    local=${ref#refs/remotes/origin/}
    ... code here ...
done

에있는에 요?... code here ...섹션은 질문(2-4)에 대한 답변에 따라 달라집니다.

사용하다

git fetch

대신.그러면 repo의 원격 참조 및 개체가 업데이트되지만 로컬 지점, HEAD 및 작업 트리는 그대로 유지됩니다.

언급URL : https://stackoverflow.com/questions/18857570/how-to-git-pull-without-switching-branches-git-checkout

반응형