저는 Git을 처음 사용하는데 지금 이런 상황에 처해 있습니다:
다른 모든 브랜치를 마스터
브랜치 코드로 업데이트하려면 어떻게 해야 하나요?
두 가지 옵션이 있습니다:
첫 번째는 병합이지만 병합을 위한 추가 커밋이 생성됩니다.
각 브랜치를 체크 아웃한다:
git checkout b1
그런 다음 병합합니다:
git merge origin/master
그런 다음 푸시합니다:
git push origin b1
또는 리베이스를 수행할 수도 있습니다:
git fetch
git rebase origin/master
기본적으로 두 가지 옵션이 있습니다.
git 체크아웃합니다 b1 git 병합해야 마스터
이로 인해 역사를 그대로 발생했습니까: 너 갈래, 그리고 마지막으로 변경 내용을 변경한 사찰안에 에서 모든 분기로서의 내장했습니다 마스터에서 모든 3 에 있다.
깃 (git) '' 이 상황에 대해 정말 잘 처리할 수 있는 일이 병합합니다 고안되었습니다 모든 방향에서 동시에. 이 믿을 수 있는 모든 스래드입니다 함께 구할 수 있을 것입니다. 이는 단순히 신경 쓰지 않습니다 '마스터' 또는 '마스터', '병합합니다 표시할지를 분기로의 b1' 병합 ',' b1 병합합니다 커밋합니다 모두 같은 git 으로 보인다. 다만, 이것은 이 병합해야 motor1.1end 백업하도록 분기로의 가리키는 커밋합니다.
git 체크아웃합니다 b1 git 리베이스 마스터
이 때문에 모든 선형 역사에 내보내집니다 외곽진입 같은 사람들이 있다. 그러나 이 일괄이라는 역사는 거짓말, 그리고 있다는 점을 알고 있어야 합니다. 이 커밋합니다 고려해보십시오 그래프화합니다:
A - B - C - D - master <. \ E - F -. - b1 ᄀ씨 <\
이 결과 병합해야 진정한 있다.
A - B - C - D - master <. \ E - F G H, b1 <\ + - - -
그러나 이 리베이스 이 역사를 알 수 있습니다.
A - B - C - D - master <. \
그 결과, t 구분할 수 있는데, 이 중 어떤 것이 can& # 39 세 'E', 'F' 및 'G' 는 실제로 커밋한 회귀 '의 가치를 줄이지 양분하다 깃 (git)'.
깃 (git) ',' i am not 한다고 알리는 shouldn& # 39 리베이스 사용할 수 없다. It has its 는. 그러나 사실을 알고 있어야 할 때마다 필요한 사용하며, 역사에 관한 거짓말을 하고 있습니다. 적어도 컴파일하십시오 새로운 테스트하려면 커밋한 합니다.
'git 리베이스 마스터'를 사용하는 것이 올바른 방법이다. 병합을 하면 병합을 위한 커밋이 생성되지만 리베이스는 그렇지 않습니다.
git checkout master
git pull
git checkout local_branch_name
git rebase master
git push --force # force required if you've already pushed
유라유라테이코쿠:
@cmaster 가장 좋은 대답을 했다. 개요:
git checkout master #
git pull # update local master from remote master
git checkout <your_branch>
git merge master # solve merge conflicts if you have`
그 대신 실제 역사를 분기로의 재작성할 안됩니다 렉시한테서 스테이드 향후 참조입니다. 그러나 이는 한 동안 추가 커밋합니다 병합하여 사찰안에 만든 것이다. 커밋한 연간등가비용 않습니다.
마스터 (백업) 를 같은 다른 분기로서의 업데이트하려면 지사급 복제본입니다. 어느 쪽이든 준수하십시오 (리베이스 또는 병합해야) 할 수 있습니다.
참고: 그러나 새 기지를 구축하는 것이 리베이스 (새로운 복제본에)
>. git 체크아웃합니다 백업 >. git 병합해야 마스터 >. git push
(같은 경우 다른 분기로서의 반복하십시오 backup2 &. etc.)
>. git 체크아웃합니다 백업 >. git 리베이스 마스터 >. git push
(같은 경우 다른 분기로서의 반복하십시오 backup2 &. etc.)
이 문제에 대한 두 가지 옵션이 있습니다.
리베이스 깃 (git)
병합해야 깃 (git)
위에 있는 것) 의 경우, 추가 커밋합니다 병합해야 역사상 모두 미디어만을 diff
git 체크아웃합니다 분기로의 (b1, b2, b3)
그 / 마스터에는 리베이스 깃 (git) 의 경우, 충돌함 수행여 로컬으로 해결하십시오 리베이스 - 계속)
git push
깃 (git) 또는 병합해야 옵션은 유사물 패션
1), (b1, b2, b3) " 체크아웃합니다 your_branch" 깃 (git).
정의마스터 병합해야 깃 (git)
git push