🔐 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파일의 내용이

상단 다른 내용


하단 다른 내용

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

상단 수정된 내용


하단 다른 내용

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

상단 다른 내용


하단 수정된 내용

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

  • 이 상태에서 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 많은 도움을 받은 생활코딩입니다.

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

태그: ,

카테고리:

업데이트:

댓글남기기