방금 GIT를 사용하기 시작했고 훌륭하다고 생각했지만 merge
명령이 수행 하는 작업에 대해 약간 혼란 스럽습니다 .
"A"지점에 작업중인 프로젝트가 있다고 가정 해 보겠습니다.
집에 가서이 지점을 변경하고 "B"로 저장합니다. 다른 프로그래머가 "A"를 변경하고 "C"로 저장합니다.
두 분기 "B"와 "C"를 병합 한 다음 변경 사항을 새 분기로 커밋하는 방법이 있습니까?
아니면 '병합'의 요점을 놓치고 있습니까?
방금 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
git add conflicting_files
한 다음git commit
사례 : 기본적으로 생성 된 병합 커밋 을 무시 해야하는 경우 다음 단계를 따르세요.
이미 2 개의 커밋이있는 마스터에서 새로운 기능 브랜치를 체크 아웃했다고 가정 해 보겠습니다.
Checkout a new feature_branch
그런 다음 기능 분기가 두 개의 커밋을 추가합니다 .-->
이제 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