Programing

마스터에서 개발 브랜치로 git pull

lottogame 2020. 2. 19. 21:19
반응형

마스터에서 개발 브랜치로 git pull


dmgr2 (개발)라는 브랜치가 있고 마스터 브랜치 (라이브 사이트)에서 가져 와서 모든 변경 사항을 내 개발 브랜치에 통합하려고합니다. 더 좋은 방법이 있습니까? 다음은 변경 사항을 커밋 한 후 계획 한 것입니다.

git checkout dmgr2
git pull origin master

이것이 실제 변경 사항을 개발 지점으로 가져와야합니까? 아니면 잘못 되었습니까?


나열된 단계가 작동하지만 더 많은 옵션을 제공하는 더 긴 방법이 있습니다.

git checkout dmgr2      # gets you "on branch dmgr2"
git fetch origin        # gets you up to date with origin
git merge origin/master

fetch전과 명령은 어느 시점에서 할 수있는 merge, 즉, 당신의 순서를 바꿀 수있는 가져 오기 때문 체크 아웃, fetch바로 원격 이름 (까지가는 origin)와 그것을 말한다 : "내놔 모든 것을 당신은 내가하지 않는 것이있다 ", 즉 모든 지점에서 커밋합니다. 저장소에 복사되지만 원격에 origin/branch이름이 지정된 분기의 이름이 지정 branch됩니다.

이 시점에서 모든 뷰어 ( git log, gitk등)를 사용하여 자신이 가지고 있지 않은 "자신이 가진 것"을 볼 수 있으며 그 반대도 마찬가지입니다. 때때로 이것은 따뜻한 퍼지 감정 ( "아, 네, 사실 내가 원하는 것")에만 유용하며 때로는 전략을 완전히 바꾸는데도 유용합니다 ( "아, 아직 그 물건을 원하지 않습니다").

마지막으로, merge명령은 이름을 지정할 수있는 지정된 커밋 origin/master을 가져 와서 해당 커밋과 조상을 가져올 때 수행하는 모든 작업을 수행 할 때 수행하는 모든 분기에 수행합니다 merge. 빨리 감기를 삽입 --no-ff하거나 --ff-only방지 하거나 원하는 경우 결과가 빨리 감기 인 경우에만 병합 할 수 있습니다.

시퀀스를 사용할 때 :

git checkout dmgr2
git pull origin master

pull명령은 git에게 run을 지시 git fetch한 다음 도덕적으로 라는 명령을합니다 git merge origin/master. 따라서 이것은 두 단계를 직접 수행하는 것과 거의 동일하지만 아마도 당신과 관련이없는 약간의 미묘한 차이점이 있습니다. (특히 fetch실행 단계 pull 가져 오며 origin/master리포지토리의 참조를 업데이트하지 않습니다. 1 새로운 커밋은 특별한 FETCH_HEAD참조 로만 참조됩니다.)

더 명확하고 git fetch origin(선택적으로 둘러보기) git merge origin/master시퀀스 를 사용하는 경우 네트워크를 통해 master한 번만 fetch실행 하여 리모컨을 사용하여 로컬 을 최신 상태로 유지할 수도 있습니다.

git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master

예를 들어.


1 이 두 번째 부분은 git 1.8.4에서 "고정"이라고 변경되어 이제는 "원격 지점"참조를 업데이트합니다. (릴리스 노트에서 알 수 있듯이 업데이트를 건너 뛰려는 의도적 인 디자인 결정이지만 더 많은 사람들이 git 업데이트를 선호하는 것으로 나타났습니다. 이전 원격 지점 SHA-1을 원할 경우 기본적으로 저장됩니다 reflog에서 복구 할 수 있으며 업스트림 리베이스를 찾는 새로운 git 1.9 / 2.0 기능도 사용할 수 있습니다.)


상황 : 지역 지점에서 일하고 있지만 개발 지점에서라는 업데이트를 유지하고 싶습니다 dev.

해결책 : 일반적으로 다음을 선호합니다.

git fetch
git rebase origin/dev

시나리오 :

마스터 업데이트 및 분기 업데이트가 있습니다. 분기가 리베이스 기능을 사용하여 마스터를 추적하고 모든 기록을 올바르게 추적하기를 원합니다. 내 분기 Mybranch에 전화합시다.

해결책 :

git checkout master    
git pull --rebase    
git checkout Mybranch    
git rebase master
git push -f origin Mybranch
  • 상황과 git 힌트에 따라 git mergetool &, git rebase --continue, git rebase --skip, git add -u와의 모든 충돌을 해결해야합니다.

(Tzachi Cohen이 제공 한 마지막 단계에 대한 수정은 "-f"를 사용하여 git을 "서버에서 히스토리 업데이트"로 강제 함)

이제 브랜치가 마스터 및 리베이스, 원격 업데이트와도 정렬되어야하므로 git log에는 "뒤에"또는 "미리"가 없으므로 모든 로컬 충돌 * .orig 파일을 제거하여 폴더를 "깨끗하게"유지하십시오


이것은 나를 위해 일했습니다. 마스터에서 내 지점으로 최신 코드를 가져 오기

git rebase origin/master

참고 URL : https://stackoverflow.com/questions/20101994/git-pull-from-master-into-the-development-branch



반응형