다른 지점에서 변경 사항을 가져 오는 방법


84

저는 현재 featurex지점 에서 일하고 있습니다 . 마스터 브랜치의 이름은 branch our-team입니다. 작업을 시작한 이후 featurex로 브랜치가 더 많이 변경되었습니다 our-team. featurex병합 하기 전에 로컬에서 모든 변경 사항을 가져오고 싶습니다.our-team 분기에서로featurex 것이 예상대로 작동하는지 확인하고 싶습니다.

최신 변경 사항을 모두 가져 오기 위해 로컬에서 수행했습니다. our-team .

git checkout our-team
git pull

어떻게 할 수 있습니까?


6
당신은 매우 신중하고 정확하게 질문했습니다. 이렇게하면 멍청한 사람 (예 : 나)이 쉽게 대답 할 수있을뿐만 아니라 더 쉽게 이해할 수 있습니다.
douglas.kirschman

답변:


45

예를 들어 브랜치에있을 때 rebase 를 사용할 수 있습니다.git rebase our-teamfeaturex

분기의 끝에서 분기의 시작 지점을 이동하여 our-team분기의 모든 변경 사항을 병합합니다 featurex.


3
앞으로도 사용할 예정인데 이번에는 그냥 다음과 같이 했어요 .. 같은 효과가 있나요? git checkout our-team git pull git checkout featurex git merge our-team
Anthony

5
강조하고 싶습니다.이 작업을 수행 하고 our-team로컬 에서 변경 사항 이없는 경우 git fetch && git rebase origin/our-team대신 실행해야합니다 . 명령은 저장소가 이전에 업데이트되었다고 가정합니다.
Makoto

97
  1. 마스터 브랜치로 이동 our-team

    • git checkout 우리 팀
  2. our-team지점 에서 모든 새로운 변경 사항을 가져옵니다.

    • git pull
  3. 당신의 지점으로 가십시오 featurex

    • git checkout featurex
  4. 의 변화 병합 our-team에 지점 featurex지점

    • 자식 병합 our-team
    • 또는 특정 커밋을 병합하려면 git cherry-pick{commit-hash}
  5. our-team지점 변경으로 변경 사항을 푸시

    • git push

참고 : 아마도 당신은 밀어 내기 전에 our-team분기를 featurex분기 로 병합 한 후 충돌을 수정해야 할 것입니다.


git pull이 어디로 올까요?
치아는 Yongkang의

26
git fetch origin our-team

또는

git pull origin our-team

그러나 먼저 업데이트하려는 브랜치에 이미 있는지 확인해야합니다 (featurex).


8

거의 완료되었습니다. :)

남은 것은

git checkout featurex
git merge our-team

이것은 우리 팀을 featurex로 병합합니다.

위의 내용은 featurex의 변경 사항을 이미 커밋 / 숨겼다 고 가정합니다. 그렇지 않은 경우 먼저이를 수행해야합니다.


5

Google에서이 게시물을 보는 다른 사람들을 위해. 브랜치를 병합 하거나 리베이스하는 두 가지 옵션이 있습니다 . 둘 다 다르게 작동하지만 결과는 비슷합니다.

허용 대답은 A는 REBASE . 이렇게하면 모든 커밋이에 수행 된 our-team 다음에 수행 된 커밋이 적용 featurex되어 필요에 따라 병합하라는 메시지 가 표시됩니다 .

리베이스에 대한 한 가지주의 사항은 브랜치 기록을 잃거나 다시 작성하는 것입니다. 이 지점에 근무 다른 사람에 대한 문제를 일으킬 수 있으며, 일부 원격 도구는 그것에 대해 불평 할 것이다. 당신이하고있는 일에 대해 확신이 있다면--force 플래그의 목적입니다.

어떤 다른 포스터가 제안하는 것은입니다 병합 . 이것은 featurex어떤 상태를 가진 브랜치 를 가져와 현재 상태 인의 병합을 시도 our-team하여 our-team.에 푸시하기 전에 하나의 큰 병합 커밋을 수행하고 모든 병합 오류를 수정하라는 메시지를 표시합니다 . 차이점은 당신이 적용된다는 것입니다 featurex커밋을 하기 전에our-team 새로운 커밋하고 차이를 고정. 또한 히스토리를 다시 작성하지 않고 이전에 온 것을 다시 작성하는 대신 하나의 커밋을 추가합니다.

두 옵션 모두 유효하며 동시에 작동 할 수 있습니다. 기능 브랜치에 대해 일반적으로 수행되는 작업 ( 즉, git-flow 와 같은 광범위한 도구 및 방법론을 사용하는 경우 )은 기본 브랜치에 병합하고 종종 병합 요청을 통해 모든 충돌을 해결하는 것입니다. 하나 (또는 ​​여러 개의) 병합 커밋으로 발생합니다.

Rebasing은 흥미로운 옵션으로, 결국 병합을 진행하기 전에 분기를 수정하고 하나의 큰 병합 커밋을 수행해야하는 고통을 덜어줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.