From b2d6ba484e4fb0f6ffd637118d696deae697c6c0 Mon Sep 17 00:00:00 2001 From: youz2me Date: Mon, 25 Nov 2024 03:10:24 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=203-way=20merge=20=EC=8B=A4=EC=8A=B5?= =?UTF-8?q?=EC=9D=84=20=EC=9C=84=ED=95=9C=20=ED=8C=8C=EC=9D=BC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week10/threeway-merge.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 week10/threeway-merge.md diff --git a/week10/threeway-merge.md b/week10/threeway-merge.md new file mode 100644 index 0000000..b49e1d2 --- /dev/null +++ b/week10/threeway-merge.md @@ -0,0 +1,5 @@ +3-way merge는 서로 다른 두 브랜치에서 두 브랜치 모두 다른 변경사항이 생기는 경우 사용되는 merge 방식입니다. +서로 다른 두 변경사항이 합쳐지는 경우에는 반드시 두 변경사항을 병합하는 새로운 변경점을 생성하게 됩니다. +이 방식은 충돌이 발생할 가능성이 있고 충돌이 발생하면 수동으로 해결해야 해요. + +Git의 merge는 base 커밋, HEAD, merge 하는 대상 브랜치의 변경 내용을 기반으로 동작합니다. From 8bbd418eaadca8463f21ceac73730a1d87aed3a1 Mon Sep 17 00:00:00 2001 From: youz2me Date: Wed, 27 Nov 2024 00:40:43 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EB=82=B4=EC=9A=A9=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week10/pull-practice.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/week10/pull-practice.md b/week10/pull-practice.md index c9aa818..fd73471 100644 --- a/week10/pull-practice.md +++ b/week10/pull-practice.md @@ -1,3 +1,3 @@ -git pull은 fetch와 merge를 결합한 명령어입니다. +물론 fetch를 이용해 원격 레포지토리의 변경사항을 가져오고 merge하는 방식은 안전하다는 장점이 있지만 사실 좀 귀찮다는 단점이 있습니다. 원격 브랜치의 내용을 받아와서 자동으로 현재 브랜치에 반영하고자 할 때 위와 같이 `pull` 명령어를 사용합니다. -작업하고 있는 브랜치에 최신 변경사항을 반영하고자 할 때 유용하게 쓰일 수 있어요. +다만 pull의 경우 자동으로 fetch와 merge 를 동시에 수행하기 때문에 충돌이 발생할 수도 있습니다. 이 경우 당황하지 마시고 위에서 배웠던 것처럼 침착하게 충돌을 해결하신 후 커밋하신 뒤 한번 더 pull 명령어를 입력해주세요! From 22e8d2127b43acd475486224ddc1064a1c62d3aa Mon Sep 17 00:00:00 2001 From: youz2me Date: Wed, 27 Nov 2024 00:52:46 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=EB=82=B4=EC=9A=A9=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week10/ff-merge.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/week10/ff-merge.md b/week10/ff-merge.md index d9e62da..907c84f 100644 --- a/week10/ff-merge.md +++ b/week10/ff-merge.md @@ -1,3 +1,5 @@ 그렇다면 `A` 브랜치가 `B` 브랜치와 합쳐진다고 생각했을 때 현재 `A` 브랜치가 가리키는 커밋을 `B` 브랜치에서 내용이 추가된 커밋으로 설정하면 되겠죠? 이렇게 진행할 경우 A 브랜치에서 내용 추가라는 변경사항을 새로 생성하지 않고도 참조 값을 변경해 두 브랜치의 변경 사항을 하나로 합칠 수 있습니다. 위와 같이 실제 변경사항을 합치기보다는 `HEAD`를 옮기는 방법을 **fast-forward merge**라고 합니다. + +Git에서는 기준이 되는 브랜치에 신규 커밋이 존재하지 않고 다른 브랜치에만 새로운 커밋이 존재할 때 자동으로 fast-forward merge를 실행합니다.