programing

분기를 마스터와 동기화/업데이트 상태로 유지하는 방법은 무엇입니까?

muds 2023. 5. 6. 16:45
반응형

분기를 마스터와 동기화/업데이트 상태로 유지하는 방법은 무엇입니까?

저는 지금 머리를 쥐어짜고 있는데, 다음에 대한 최선의 해결책을 생각해 낼 수가 없습니다.

두 개의 분기가 있는데, 하나는 마스터이고 다른 하나는 모바일 장치 지원입니다.모바일 장치 지원이 안정적일 때마다 마스터 분기와 병합/동기화되는 연속 분기로 모바일 장치 지원을 유지하고 싶습니다.이렇게 하면 모바일 장치 지원에서 마스터로 변경 사항을 병합할 수 있을 뿐만 아니라 마스터에서 모바일 장치 지원으로 모든 변경 사항을 가져와 분기 작업을 계속할 수 있고 기능을 개선하거나 수정할 수 있습니다.이것은 중앙 저장소 및 여러 개발자와 함께 작동해야 합니다.

다른 사람들이 사용하는 유사한 워크플로우의 예를 들어주시거나 이 아이디어가 어리석고 다른 옵션을 고려해야 하는지 알려주십시오.현재 워크플로우가 건전한 것처럼 보이지만, 어떻게 하면 GIT를 이런 식으로 작동시킬 수 있을지 모르겠습니다.

감사합니다, 모두 도와주셔서 감사합니다.

업데이트 1: 마스터를 모바일 장치 지원에 병합하고 모바일 장치 지원을 마스터에 병합할 경우 두 분기에 걸쳐 복제된 커밋이 생성됩니까?아니면 제가 A 지점에서 B 지점으로 최신 변경 사항을 가져와서 B 지점에 병합 커밋 C를 추가했다는 것을 알 수 있을 정도로 똑똑합니다.그리고 나는 B 지점에서 A 지점으로 최신 변경 사항을 끌어왔고 A 지점에 병합 커밋 D를 추가했습니다.

이미지를 올리려고 했는데 이미지에 대한 평판이 좋지 않아서 다음 일러스트로 해야 할 것 같습니다.두 개의 분기가 연속적으로 실행되고 양방향으로 병합되는 경우가 많습니다.제가 확신할 수 없는 핵심은 git가 커밋을 어떻게 실행할 것인지, 병합 시 다른 브랜치의 커밋으로 어느 브랜치를 채울 것인지, 아니면 깨끗하게 유지할 것인지입니다.이전에 rebase를 사용한 적이 있는데 브랜치를 종료하고 마스터에 커밋을 모두 넣었거나 잘못한 것 같습니다.지금까지 도와주셔서 감사합니다.

master
A--B--C-----H--I--J--M--N
       \   /    \
mobile  \ /      \
D--E--F--G--------K--L

예, 그냥 하세요:

git checkout master
git pull
git checkout mobiledevicesupport
git merge master

모바일 장치 지원을 마스터와 동기화 상태로 유지합니다.

그런 다음 모바일 장치 지원을 마스터에 추가할 준비가 되면 먼저 위와 같은 마스터에서 병합한 후 다음을 수행합니다.

git checkout master
git merge mobiledevicesupport
git push origin master

그리고 이것이 마지막입니다.

여기서 가정하는 것은 mobilexxx가 아직 메인 브랜치에 들어갈 준비가 되지 않은 작업이 있는 주제 브랜치라는 것입니다.따라서 모바일 장치 지원이 좋은 위치에 있을 때만 마스터로 병합하십시오.

마스터에서 작업 분기로 변경 내용을 가져오려면 다음 작업을 수행합니다.git rebase <remote>/master 하세요.해결합니다.

한 후 작업을 수행합니다.git push <remote> HEAD:master원격(중앙 repo)에서 마스터 분기가 업데이트됩니다.

Concept47의 접근 방식이 올바른 방법이지만 커밋 기록을 명확하게 유지하기 위해 --no-off 옵션과 병합하는 것이 좋습니다.

git checkout develop
git pull --rebase
git checkout NewFeatureBranch
git merge --no-ff master

git merge를 통해 수락된 답변은 작업을 완료하지만 커밋 기록은 지저분하게 남습니다. PR 전에 최종 푸시를 수행하기 전에 기능 분기가 개발과 동기화되도록 유지하려면 다음 단계를 통해 올바른 방법으로 '기본 설정'을 수행해야 합니다.

1 git fetch피쳐 분기에서(작업 중인 피쳐 분기가 최신 상태인지 확인)

2 git rebase origin/develop

3 분쟁이 발생하면 하나씩 해결

4회 사용git rebase --continue되면,

5 git push --force

네, 저는 당신의 접근 방식에 동의합니다.모바일 장치 지원을 마스터에 병합하려면 사용할 수 있습니다.

git checkout master
git pull origin master //Get all latest commits of master branch
git merge mobiledevicesupport

마찬가지로 모바일 장치 지원에서 마스터를 병합할 수도 있습니다.

Q. 교차 병합이 문제인지 여부.

A. 마지막으로 동기화된 시점부터 모바일* 지점 및 마스터 지점에서 수행한 커밋에 따라 달라집니다.다음 예를 들어보겠습니다. 마지막 동기화 후 이 분기에 다음 커밋이 발생합니다.

Master branch: A -> B -> C [where A,B,C are commits]
Mobile branch: D -> E

이제 commit B가 a.txt 파일을 일부 변경했다고 가정하고 commit D도 a.txt 파일을 일부 변경했다고 가정합니다.이제 합병의 각 작업이 미치는 영향을 살펴보도록 하겠습니다.

git checkout master //Switches to master branch
git pull // Get the commits you don't have. May be your fellow workers have made them.
git merge mobiledevicesupport // It will try to add D and E in master branch.

이제 두 가지 유형의 병합이 가능합니다.

  1. 빠른 전달 병합
  2. 실제 병합(수동 작업 필요)

Git는 먼저 FF 병합을 시도하고 Git에 의해 해결할 수 없는 충돌이 발견되면 이를 수행합니다.병합이 실패하고 병합을 요청합니다.이 경우 .txt의 충돌 해결을 담당하는 새 커밋이 발생합니다.

즉, 교차 병합은 문제가 되지 않으며 궁극적으로 이를 수행해야 하며 동기화가 의미하는 바입니다.생산 작업을 수행하기 전에 지점을 병합할 때 손을 더럽히십시오.

다음 명령을 실행합니다.

$ git checkout mobiledevice
$ git pull origin master 

이렇게 하면 지점에 대한 모든 최근 커밋이 병합됩니다.병합으로 인해 충돌이 발생하면 이를 해결해야 합니다.

이것이 최선의 방법인지는 모르겠지만 저에게는 효과가 있습니다.

당신은 올바른 방향으로 생각하고 있습니다.마스터를 모바일 장치 지원과 지속적으로 병합하고 모바일 장치 지원이 안정적인 경우 마스터와 병합합니다.각 개발자는 고유한 분기를 가지며 역할에 따라 마스터 또는 모바일 장치 지원을 통해 병합할 수 있습니다.

using yourBranch = mobiledevicesupport;

지점 동기화 유지master두 가지 중요한 세부 정보로 구성됩니다.

  1. 다음에 따라 클라우드에서 지사 버전을 업데이트합니다.master
  2. 다음에 따라 PC의 Branch 버전을 업데이트합니다.master

사용 방법:

지점이 뒤에 있다고 가정할 때master

  1. 병합 요청 생성master지점으로 이동(예: GitLab 웹 UI를 통해)
  2. 병합 요청 수락/취소master지점으로 이동(예: GitLab 웹 UI를 통해)
  • 이제부터 변경 사항이 있습니다.master귀지에서
  • 로드되었습니다.master아직 로컬이 아닌 원격(클라우드) 지점의 변경 사항
  1. 로컬(PC)에 있는 이전 버전의 지점 업데이트
  • 지금 지점과 로컬로 상호 작용하고 있는지 확인합니다.
  • git fetch변경 사항을 확인합니다.
  • git status로컬 리포지토리의 상태(: 마스터 뒤에 있는 5개의 커밋)를 알려줍니다.
  • git pull변경 내용이 있는 클라우드("원격"에서)에서 새 업데이트 버전을 다운로드합니다.master추가됨 - 이제 로컬 저장소(컴퓨터의)에서도 마스터와 동기화됩니다.

언급URL : https://stackoverflow.com/questions/16329776/how-to-keep-a-branch-synchronized-updated-with-master

반응형