🔐 0. 같은파일 병합_1

이번엔 같은 파일의 병합을 실습해보겠다.

앞서 merge를 테스트 했던 환경을 다시 만든다.
나는 파일탐색기로 manaul-merge파일안에 .git포함 모든 파일을 지우고 다시 git init을 하였다.

  • 만들어진 디렉토리에 work.txt파일을 만든 뒤 내용을 적는다. 여기서 같은 파일의 병합을 테스트하는 것 이기 때문에 내용을 두가지로 나눠서 적는다
  • git branch o2로 새로운 가지를 생성한 뒤 현재 master에서 work.txt파일의 내용을 수정하여 다른 버전을 생성
  • 똑같이 checkout으로 o2버전의 work.txt파일의 위에서 수정한 내용이 아닌 다른 부분 수정후 커밋

git-merge_3

여기서 세가지 버전 뿌리가 되는 1버전과 master work 2, o2 work 2버전은 work.txt파일 한가지만 가지고 있다. 만약 1버전의 txt파일의 내용이

1
2
3
4
상단 다른 내용


하단 다른 내용

으로 저장되어 있다면 master work 2는

1
2
3
4
상단 수정된 내용


하단 다른 내용

이렇게 저장되어 있고 o2 work 2 버전은

1
2
3
4
상단 다른 내용


하단 수정된 내용

으로 저장되어 있는 상태 여기서 주의 깊게 봐야할 점은 둘다 서로 같은 파일이지만 다른부분을 수정했다는 것 여기서 말하고자 하는 점은 따로 충돌은 일어나지 않는다는 점이다.

  • 이 상태에서 merge를 하기 위해 checkout으로 master버전으로 복귀
  • git merge o2로 버전 병합 후 work.txt파일 내용 확인

git-merge_4

병합은 앞서 해본 대로 충돌없이 잘 이어진 모습이고 cat으로 확인해본 내용 또한 문제없다.

아마 같은 파일 같은 내용을 서로 다르게 수정한 경우에 충돌이 발생하는 듯 하다.

📕실습

  1. 새로운 디렉토리에 git init하여 초기화
  2. 앞서 배운 방식으로 work.txt파일을 만들고 커밋
  3. 새로운 branch생성
  4. 현재 마스터 버전 work.txt수정 후 커밋
  5. git checkout으로 다른 branch로 이동 후 work.txt파일 수정 후 커밋
  6. 이때 같은 부분 수정이 아닌 서로 다른 부분 수정
  7. git checkout master로 전환
  8. git merge ‘branch명’으로 병합
  9. cat work.txt파일로 병합 확인


🔐 0. 같은파일 병합_2

이번엔 같은 파일 같은 부분을 수정 후 병합 해보겠다. 이 부분은 앞서 언급 한 충돌을 일부러 유도하는 과정이다.

새로운 테스트를 위해 역시 다시한번 새롭게 init을 하거나 reset으로 초기버전으로 돌아간다.

앞서 방식과의 차이점은 같은 부분을 수정한다는 점이다.

따로 실습을 작성하지 않겠다 위의 내용으로 복습진행..

git-merge_5

위와 똑같이 과정을 진행하는데 같은 파일의 같은 부분을 수정하고 merge를 한다면 이와 같은 오류가 출력된다.

CONFLICT이 발생하고 발생한 파일을 알려준다. 이 부분은 우리가 직접 수정해야 하는 부분이기 때문에 직접 수정해야 한다.

git-merge_5

수정 전 merge후 git status입력 시 나오는 설명 both modified 즉, 둘다 수정되었기 때문이다.

직접 수정해야 하기 때문에 nano work.txt로 에디터에 들어가면

git-merge_5

위와 같이 출력이 되어 있다. 여기서 =======은 구분선이고 <<<<<<< head 는 지금 가르키고 있는 branch에서 작성됨을 의미한다. 마찬가지로 >>>>>>> o2 는 o2 branch에서 작성됨을 뜻한다.

수정하는 방법은 구분선, >>,<<을 지우고 수정할 내용으로 변경하고 저장하면 된다.

git-merge_5

이 처럼 변경하고 저장하고 add를 실행한다. 이는 git에게 내가 직접 수정했다는 것을 알리는 것 이후 status를 찍어보면 잘 올라간 것을 확인 할 수 있다.

git-merge_5

이후 git commit -m ""을 사용해도 되지만 git commit만 실행하면

git-merge_5

자동으로 커밋메세지를 만들어 준다. Merge branch o2 즉 o2를 병합한 새로운 커밋이다.

git-merge_5

마지막으로 log를 찍어보면 o2 work 2, master work 2를 부모로 하는 새로운 커밋이 생긴 걸 알 수 있다.

추가적으로 cat으로 내용을 찍어도 정상적이게 수정이 되어 있다.


✍️ GIT & 터미널 & 리눅스 용어 정리


https://opentutorials.org/course/3837 많은 도움을 받은 생활코딩입니다.

공부 정리내용은 생활코딩 및 구글링을 통한 내용을 정리하였습니다.

태그: ,

카테고리:

업데이트:

댓글남기기