안녕하세요.
이번에는 Git Merge 기능을 케이스 별로 알아보겠습니다.
merge case 1 - 각 branch에서 서로 다른 파일을 수정하였을 때
merge case 2 - 각 branch에서 같은 파일이지만 다른 부분을 수정하였을 때
merge case 3 - 각 branch에서 같은 파일에서 같은 부분을 수정하였을 때
Merge
(main) git merge a
- 기본적으로 사용하는 방법
- main에 a branch 내용을 합침
git checkout main
git merge test
case 1번 하기전에 생성되어 있는 모든 branch 삭제 후 진행하시기 바랍니다.
merge case 1
- branch에서 다른 파일을 수정하였을 때 test branch에서는 readme 파일 수정, admin branch에서는 admin.html 파일 수정
test, admin 브랜치 2개를 생성합니다.
git branch test
git branch admin
git checkout test
test 브랜치에서 readme 파일 수정 / 다른 파일도 상관 없습니다.
git add .
git commit -m "test branch"
브랜치 변경 후 진행할 것
git checkout admin
admin.html 파일 생성 후 내용 입력합니다.
git add .
git commit -m "admin branch"
test 브랜치를 admin 브랜치와 합친다.
git checkout test
git merge admin
- merge 이후 창이 입력 창이 나오는데 commit -m "메시지" 입력하는 것처럼 i 눌러서 INSERT로 바꾸면 내용 입력할 수 있습니다.
- 메시지 입력 창에서 ESC 누른 후 아래 내용 중에서 선택해서 입력해주면 됩니다.
- :wq => 저장하고 종료
- :q! => 저장하지 않고 종료
여기서는 :wq 로 입력하여 종료합니다.
창을 나오면 merge가 되었다고 나옵니다.
파일도 test 브랜치 1개에 합쳐진 것을 볼 수 있습니다.
마지막으로 git push origin test 까지 해주면 됩니다.
git push origin test
그리고 홈페이지에서 test branch 선택 후 admin branch에서 수정한 내용이 제대로 들어갔는지 체크하면 종료입니다
case 2번 하기전에 생성되어 있는 모든 branch 삭제 후 진행하시기 바랍니다.
merge case 2
- branch에서 같은 파일이지만 다른 부분을 수정하였을 때
main에서 test.html 파일을 1개 생성 후 저장합니다.
test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
test.html 파일 생성 후 push 까지 해줍니다.
git add .
git commit -m "test"
git push
main에서 one branch를 생성합니다.
git branch one
git checkout one
one branch에서 test.html 파일의 Title 수정 후 commit 까지 진행합니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>one Branch</title>
</head>
<body>
</body>
</html>
git add .
git commit -m "feat: one branch Title"
main Branch로 복귀 후 two Branch 생성 및 이동
git checkout main
git branch two
git checkout two
two branch에서 test.html 파일의 h1 태그 내용 수정 후 commit 까지 진행
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Two Branch</h1>
</body>
</html>
git add .
git commit -m "Two Branch H1"
one branch로 이동 후 git merge two 실행
git checkout one
git merge two
창이 나오면 i 누르고 ESC 누르고 :wq 입력 후 엔터를 눌러줍니다.
merge가 완료되었습니다.
one branch에 one와 two 내용이 합쳐진 코드 확인합니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>one Branch</title>
</head>
<body>
<h1>Two Branch</h1>
</body>
</html>
case 3번 하기전에 생성되어 있는 모든 branch 삭제 후 진행하시기 바랍니다.
merge case 3
- branch에서 같은 파일에서 같은 부분을 수정하였을 때
main에서 e 브랜치를 생성 후 checkout 으로 이동합니다.
git branch e
git checkout e
e branch에서 test.html의 title을 수정 후 commit 까지 진행합니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>E Branch</title>
</head>
<body>
</body>
</html>
git add .
git commit -m "E Branch"
다시 main으로 이동 후 f branch 생성 후 이동합니다.
git checkout main
git branch f
git checkout f
test.html의 title 수정 후 commit 까지 진행합니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>F Branch</title>
</head>
<body>
</body>
</html>
git add .
git commit -m "F Branch"
e branch로 이동 후 git merge f 명령어를 입력합니다.
git checkout e
git merge f
merge 명령어 실행 시 코드가 바로 합쳐지지 않고 표시가 됩니다.
bash창에서는 (e)가 (e|MERGING)으로 표시 됩니다.
충돌이 생긴 상태이며, VS Code에 다음과 같이 선택할 수 있는 보기가 나옵니다.
해당 선택지를 선택해도 되고, 수동으로 수정해도 됩니다.
Accept Current Change => 현재 위치(E)가 최신이므로 E를 선택하겠다.
Accept Incoming Change => F가 최신이므로 F를 선택하겠다.
Accept Both Change => 둘다 반영하겠다 => 해당 Ex의 경우에는 title이 2개가 생성됩니다.
Compare Change => 비교를 정확하게 보고 싶은 경우 선택
여기서는 Accept Current Change 를 선택해줍니다.
선택하면 E Branch로 타이틀로 변경되는것을 볼 수 있습니다.
변경되었으면 파일을 저장합니다.
이제 다시 add 명령어와 commit 명령어를 입력합니다.
commit하면 (e|MERGING)에서 (e)로 다시 바뀌며 충돌이 해결되었습니다.
git add .
git commit -m "feat: test merge"
이상으로 Git Merge의 상황에 따른 처리 방법에 대하여 알아보았습니다.
감사합니다.
'IT 기타' 카테고리의 다른 글
[Git] .gitignore 파일에 대하여 알아보기 (2) | 2023.01.31 |
---|---|
[Git] Git의 다른 명령어에 대하여 간단하게 알아보기 (0) | 2023.01.30 |
[Git] Git Branch에 대하여 알아보기 (2) | 2023.01.28 |
[기타] 서버에 대하여 간략하게 알아보기 (0) | 2023.01.27 |
[VSCode] VS Code HTML 자동 양식 생성 방법 및 크롬 개발자 모드 (0) | 2022.11.29 |