2012-11-19 4 views
3

우리는 github repo를 "중앙 저장소"로 사용하고 있습니다. 우리는 다음과 같은 방식으로 준비 서버 작업을 여러 코더가 계획git이 특정 분기에서 특정 분기로 당기기

:

  1. 코더가 로컬의 repo에서 별도의 지점에서 작업을;
  2. 코더가 github에 대한 변경 사항을 푸시합니다.

    git checkout coderA-updates
    git pull origin coderA-updates
    git checkout master

    : 다음
  3. 코더 3 단계에 실제로,

그래서 서버의 repo에 GitHub의에서 업데이트를 가져, 코더는 준비 REPO에서 다음을 실행합니다

git checkout 먼저 수행하지 않고 특정 분기를 업데이트하는 방법이 있습니까?


TLDR : 어떻게 활성화 가지를 전환 할 필요없이 git pull origin remoteBranch localBranch 그런 짓을합니까?

감사합니다 :)

+0

"특정 분기 업데이트"란 무엇입니까? 사용 가능한 상태에있는 파일을 가지고있는 유일한 브랜치는 체크 아웃 된 현재 브랜치입니다.내부 repo를 업데이트하고 싶다면, git fetch는 다른 브랜치에 대해서도 수행하지만 브랜치가 존재하지 않는다면 어쨌든 파일로 작업 할 수 없습니다. 즉, 원하는 모든 분기 또는 모든 분기를 업데이트 할 수 있지만 현재 분기 만 해당 파일을 사용할 수 있습니다. – eis

+0

안녕하세요. "특정 브랜치 업데이트"는 github에서 최신 커밋을 가져 와서 브랜치를 업데이트하는 것을 의미합니다. 분기 만 업데이트하면됩니다. 파일을 사용할 필요가 없습니다. git fetch를 사용하여 특정 분기 만 업데이트하려면 어떻게합니까? 감사합니다 – Bibokid

답변

1
git checkout branchB 
git pull origin branchA 

branchA에서 일어난 변화를 가져 지역 branchB로 병합합니다.

git help merge는 말한다 :

Incorporates changes from the named commits (since the time their histories diverged from the current branch) into the current branch.

그래서, 내가 그들 중 하나 전류를하지 않고 두 가지 작업을하는 것은 불가능하다 생각합니다.

현재 활성 분기에서 git stash을 사용하여 변경 사항을 저장 한 다음 branchB을 체크 아웃하고 branchA을 가져올 수 있습니다. 병합이 끝나면 변경을 숨긴 지점을 체크 아웃하고 git stash apply을 사용합니다.

또는 체크 아웃/당기기 전에 변경 사항을 적용하기 만하면됩니다.

이 정보가 도움이되기를 바랍니다. git help pull에서

+0

감사합니다 sergey. 이것은 현재 활성 브랜치를 변경합니다. 현재 활성 분기가 그대로 유지되도록하고 싶습니다. – Bibokid

+0

2 코더가 당기는 문제가 있습니다. CoderA는 branchA에서 작동하고 coderB는 branchB에서 작동한다고 가정 해보십시오. coderA가 branchA를 테스트하는 중간에있을 때, coderB는 branchB에 아무것도 가져 오기 전에 coderA가 먼저 테스트를 마칠 때까지 기다려야합니다. 고마워요 btw :) – Bibokid

+2

@ 비보키 두 코더가 동일한 파일 시스템에서 작업하고 있다는 것을 의미합니까? 질문에서 조금 더 명확히 할 수 있습니까? – eis

0

:

SYNOPSIS

git pull [options] [<repository> [<refspec>...]] 

DESCRIPTION

[...]

can name an arbitrary remote ref (for example, the name of a tag) or even a collection of refs with corresponding remote-tracking branches (e.g., refs/heads/:refs/remotes/origin/), but usually it is the name of a branch in the remote repository.

그래서, 당신은 git pull remoteBranch:localBranch을 할 수 있으며, 그것은 작동합니다.

+0

덕분에, 나중에 이것을 시도 할 것이다 – Bibokid

+0

'localBranch'는 이전 버전의'remoteBranch'인데'git pull origin remoteBranch : localBranch'을 시도했지만 오류 : rejected (fast-forward가 아닌)입니다. – Bibokid

+0

커밋의 해시를 찾으십시오. . 아마도 해트에 영향을주는'git rebase' 또는 그와 비슷한 것이있을 수 있습니다. – mgarciaisaia

0

를 사용하여 일반 fetch :

git fetch origin remoteBranch:localBranch 

이 만합니다 (docs 참조) 기본적으로 빨리 감기 변화를 작동합니다.

관련 문제