짧은 대답
빨리 감기 병합을 수행하는 한 간단하게 사용할 수 있습니다.
git fetch <remote> <sourceBranch>:<destinationBranch>
예 :
# Merge local branch foo into local branch master,
# without having to checkout master first.
# Here `.` means to use the local repository as the "remote":
git fetch . foo:master
# Merge remote branch origin/foo into local branch foo,
# without having to checkout foo first:
git fetch origin foo:foo
반면 황색의 대답은 또한 사용하여 빨리 감기의 경우에 작동 git fetch
하기 때문에 대신이 방법으로, 그냥 강제 이동 분기 기준보다 조금 더 안전하다 git fetch
자동으로 실수가 아닌 빠른 전달과 같은 당신이 사용하지 않는 방지 할 수 +
에 참조 사양.
긴 대답
빨리 감기가 아닌 병합을 초래할 경우 A를 먼저 체크 아웃하지 않고 분기 B를 분기 A로 병합 할 수 없습니다. 잠재적 충돌을 해결하려면 작업 사본이 필요하기 때문입니다.
그러나 빨리 감기 병합의 경우 이러한 병합이 정의상 충돌을 일으키지 않기 때문에 가능 합니다. 먼저 분기를 체크 아웃하지 않고이 작업을 수행하려면 참조 git fetch
스펙과 함께 사용할 수 있습니다 .
다음 master
은 다른 지점을 feature
체크 아웃 한 경우 업데이트 (빨리 감기가 아닌 변경 허용 안 함) 의 예입니다 .
git fetch upstream master:master
이 유스 케이스는 너무 일반적이므로 git 구성 파일에서 다음과 같이 별칭을 만들고 싶을 것입니다.
[alias]
sync = !sh -c 'git checkout --quiet HEAD; git fetch upstream master:master; git checkout --quiet -'
이 별칭의 기능은 다음과 같습니다.
git checkout HEAD
: 이렇게하면 작업 사본이 분리 된 헤드 상태가됩니다. master
체크 아웃 한 상태 에서 업데이트하려는 경우에 유용합니다 . 그렇지 않으면 지점 참조 master
가 움직이지 않기 때문에 관련이 필요하다고 생각 하지만 그것이 내 머리 꼭대기에서 실제로 맞는지 기억이 나지 않습니다.
git fetch upstream master:master
: 지역 master
과 같은 곳으로 빨리 이동합니다 upstream/master
.
git checkout -
이전에 체크 아웃 한 지점을 체크 아웃합니다 ( -
이 경우 수행하는 작업).
git fetch
for (비) 빨리 감기 병합 의 구문
당신이 원하는 경우 fetch
업데이트가 아닌 빨리 감기 인 경우 명령이 실패 당신은 단순히 형태의 refspec를 사용
git fetch <remote> <remoteBranch>:<localBranch>
빨리 감기가 아닌 업데이트를 허용 +
하려면 refspec 앞에 a 를 추가하십시오 .
git fetch <remote> +<remoteBranch>:<localBranch>
다음을 사용하여 로컬 리포지를 "remote"매개 변수로 전달할 수 있습니다 .
.
git fetch . <sourceBranch>:<destinationBranch>
설명서
git fetch
이 구문을 설명 하는 설명서 (강조 광산)에서 :
<refspec>
<refspec>
매개 변수 의 형식은 선택적인 플러스 +
, 소스 ref <src>
, 콜론 :
, 목적지 ref가 뒤 따릅니다 <dst>
.
일치하는 원격 참조 <src>
는 페치되며 <dst>
비어있는 문자열이 아닌 경우 이를 참조하는 로컬 참조는 빨리 전달됩니다<src>
. 선택적 더하기 (++
)를 사용하면 빨리 감기가되지 않더라도 로컬 참조가 업데이트됩니다.
또한보십시오
작업 트리를 건드리지 않고 Git 체크 아웃 및 병합
작업 디렉토리를 변경하지 않고 병합