git conflict 과정(상세하게)

juno·2022년 8월 3일
3

깃허브

목록 보기
1/1
post-thumbnail

Conflict(충돌)는 서로 다른 브랜치에서 같은 파일의 같은 줄에 작업을 할 때 코드가 중복되어 발생하는 상태를 의미합니다. Git으로 프로젝트를 관리할 때 마주하게 되는 Conflict에 대해 직접 해보고 기록 해 보았습니다.

준비물

  1. 테스트용 깃헙 레파지토리
  2. 푸쉬할 디렉토리 및 수정할 파일

과정

cmd 사용 연습도 같이 해보았습니다.

1.디렉토리를 만들어줍니다. 그리고 해당 디렉토리로 진입합니다.

mkdir conflick재현
cd conflick재현
  1. 파일을 만듭니다.
    파일확장자는 그냥 md로 했습니다.
touch  test.md
  1. 그 다음 생성했던 레파지토리에 일단 푸쉬 합니다.
	 git init 
     git add .
     git commit -m 'first'
     git remote add origin '주소'
     git push origin master
  1. 브랜치를 2개 만들겁니다. 그리고 test.md 파일 내용을 각 각 다르게 수정 합니다.
    이는 충돌을 재현합니다.
	//1번 브랜치 생성
    text.md 파일 수정 
    git add .
    git commit -m '1번브랜치'
    git branch 1번
    git checkout 1번
    git push origin 1번
    
    //2번 브랜치 생성
    text.md 파일 수정 
    git checkout master // 마스터로 넘어가서 브랜치를 생성한다.
    git add .
    git commit -m '2번브랜치'
    git branch 2번
    git checkout 2번
    git push origin 2번
	

  1. 1번부터 pull request를 눌러서 master 브랜치에 병합해보자.


1번 pull request 완료 후 2번을 시도하면 Merge 버튼이 비활성화 된 것을 볼 수 있다.

맨 위 그림을 다시보고, 고쳐야 할 부분을 생각해보자.

github master랑 local(컴퓨터) master 내용이 다르다.

쉬운말로 풀면.
github master는 1번이 수정한 내용으로 변한 상태인데,
local에서는 '수정전 master 내용을 기억하고있는 상태에서 2번 브랜치 내용으로 바꾸자 '라고 한것이다.

이것을 이해 해야된다..!!

뭔가 이상하지 않나요? 그니까 git에서는 수정 못하겠다고 conflit가 발생한 것이다.

conflit 해결하기

진짜 간단하다. 현재는 branch 2번에 있다. 우선 master로 가고 pull부터해서 'github master'와 'local master'를 맞추자

  git checkout master
  git pull origin master

그 다음 다시 branch 2번에가서 master랑 병합하자

 git checkout master
 git merge master

vscode는 참 친절하다.

이렇게 어떻게 할꺼냐고 물어본다

'<<<<<<< HEAD' 위의 'Accept Current Change' 부터 하나씩 눌러보는 걸 추천한다
여기서는 ctrl + z로 전 상황으로 돌릴 수 있으니,

그리고 원하는 결과를 선택하고 다시 푸쉬한다.

    git add .
    git commit -m 'conflit solution'
	git push origin 2번

다시 github에 들어가 보면,

병합할 수 있다.

후기

개발자로써 github은 필수고, conflit는 피할 수 없다고 들었다.

다른 사람들이 이 과정을 읽어보고 conflit를 이해 할 수 있으면 좋겠다.

profile
안녕하세요 인터랙션한 웹 개발을 지향하는 프론트엔드 개발자 입니다. https://kimjunho97.tistory.com => 블로그 이전 중

2개의 댓글

comment-user-thumbnail
2022년 8월 3일

vscode는 친절하게 콘뿔릭트 내역을 출력해주는군요! 콘뿔릭트 해결 못하는 빌런이 되지 않도록 저도 실습하러!!

1개의 답글