GIT에서 2 개의 분기를 병합 생각했지만 merge명령이 수행 하는 작업에

방금 GIT를 사용하기 시작했고 훌륭하다고 생각했지만 merge명령이 수행 하는 작업에 대해 약간 혼란 스럽습니다 .

“A”지점에 작업중인 프로젝트가 있다고 가정 해 보겠습니다.

집에 가서이 지점을 변경하고 “B”로 저장합니다. 다른 프로그래머가 “A”를 변경하고 “C”로 저장합니다.

두 분기 “B”와 “C”를 병합 한 다음 변경 사항을 새 분기로 커밋하는 방법이 있습니까?

아니면 ‘병합’의 요점을 놓치고 있습니까?



답변

merge 두 개 (또는 그 이상)의 가지를 하나로 모으는 데 사용됩니다.

약간의 예 :

# on branch A:
# create new branch B
$ git checkout -b B
# hack hack
$ git commit -am "commit on branch B"

# create new branch C from A
$ git checkout -b C A
# hack hack
$ git commit -am "commit on branch C"

# go back to branch A
$ git checkout A
# hack hack
$ git commit -am "commit on branch A"

이제 서로 다른 머리를 가진 세 개의 개별 분기 (즉, AB와 C)가 있습니다.

B와 C에서 다시 A로 변경 사항을 가져 오려면 A를 체크 아웃 한 다음 (이 예에서는 이미 수행됨) merge 명령을 사용합니다.

# create an octopus merge
$ git merge B C

기록은 다음과 같이 보일 것입니다.

…-o-o-x-------A
      |\     /|
      | B---/ |
       \     /
        C---/

저장소 / 컴퓨터 경계를 넘어 병합하려면 git pull예를 들어 분기 A가있는 pc 에서 명령을 살펴보십시오 (이 예제는 두 개의 새 커밋을 생성합니다).

# pull branch B
$ git pull ssh://host/… B
# pull branch C
$ git pull ssh://host/… C

답변

당신의 병합 변경하려는 경우 SubBranchMainBranch

  1. MainBranch에 있어야합니다. git checkout MainBranch
  2. 그런 다음 병합 명령을 실행하십시오. git merge SubBranch

답변

사례 : 기본적으로 생성 된 병합 커밋무시 해야하는 경우 다음 단계를 따르세요.

이미 2 개의 커밋이있는 마스터에서 새로운 기능 브랜치를 체크 아웃했다고 가정 해 보겠습니다.

  • “추가 된 A”, “추가 된 B”

Checkout a new feature_branch

  • “추가 된 C”, “추가 된 D”

그런 다음 기능 분기가 두 개의 커밋을 추가합니다 .–>

  • “추가 된 E”, “추가 된 F”

이제 feature_branch 변경 사항을 마스터에 병합하려면 마스터에 git merge feature_branch앉아 있습니다.

이렇게하면 모든 커밋이 마스터 브랜치에 추가됩니다 (마스터 분기에 4 개 + feature_branch에 2 개 = 총 6 개) + 'Merge branch 'feature_branch'마스터 가 분기 됨에 따라 ‘와 같은 추가 병합 커밋이 추가 됩니다.

이러한 커밋 (FB에서 만든 것)을 정말로 무시하고 feature_branch에서 만든 전체 변경 사항을 'Integrated feature branch changes into master', Run 과 같은 단일 커밋으로 추가해야하는 경우 git merge feature_merge --no-commit.

–no-commit을 사용하면 병합 커밋을 생성하기 직전에 병합을 수행하고 중지합니다. 이제 기능 브랜치에 추가 된 모든 변경 사항이 master에 있고 새 커밋을 생성 할 기회를 얻게됩니다.

자세한 내용은 여기를 참조하십시오 : https://git-scm.com/docs/git-merge