Git에서 'Merge' 는 여러 브랜치에 분산된 코드 변경 사항을 한 브랜치로 합치는 과정이다.
Fast-Forward Merge : main의 다른 커밋 사항이 없을때 병합하려는 브랜치의 커밋으로 HEAD(커밋 포인트)가 이동한다.
3-Way Merge : 두 브랜치를 병합하는 방법(병합 커밋)으로 새로운 브랜치에서 작업이 진행되는 동안 main의 작업도 진행 되었을때 Merge 하는 방법이다.
Git 충돌(conflict)는 두 개 이상의 변경 사항이 Git의 병합 과정에서 서로 충돌할 때 발생하는 문제를 의미한다. (주로 여러 사람이 동시에 같은 파일의 같은 부분을 변경했을 때 이 문제가 발생함)
Git 충돌을 해결하는 단계는 다음과 같습니다:
git status를 실행하여 충돌이 발생한 파일을 확인합니다.<<<<<<<, =======, >>>>>>>).git add를 사용하여 충돌이 해결된 파일을 스테이징합니다.git commit를 실행하여 충돌이 해결된 상태를 커밋합니다.이런 방식으로 Git 충돌을 해결하고 코드를 정상적으로 병합할 수 있습니다. 이 과정에서 중요한 점은 충돌이 발생한 모든 부분을 정확히 처리하고, 모든 충돌 마커를 제거하는 것입니다. 그렇지 않으면 Git은 여전히 충돌이 해결되지 않았다고 인식합니다.
git diff 는 소스코드 또는 파일에서 변경된 부분을 비교하고 이를 시각적으로 표시해주는 역할을 한다.
git diff HEAD : add 하고나서도 변경사항을 비교할 수 있음.
git diff 브랜치명or커밋해시..브랜치명or커밋해시 : 브랜치간 또는 커밋간의 변경점을 볼 수 있음.
git stash는 git에서 제공하는 일시적인 작업 저장소입니다. (다른 브랜치를 잠깐 가봐야할 때 stash를 이용)
git stash save(생략가능) -> git stash apply : stash 저장 및 불러오기
git stash pop : stash 불러오면서 삭제
git stahs drop stash@{n} : n번 stash 삭제
git stash clear : stash 전부 삭제
Detached HEAD 상태란, 특정 브랜치가 아닌 커밋에 직접 이동한 상태를 말합니다.
git checkout [커밋해시] : 커밋해시로 HEAD 이동
Git 2.23 버전에서 처음 소개된 명령어로, 작업 디렉토리(애드 전)나 인덱스의 변경사항(애드 후 커밋 전)을 특정 커밋의 상태로 되돌리는 데 사용됩니다. 이는 예기치 않게 수정한 파일을 원래 상태로 되돌리거나, 커밋하지 않은 변경사항을 제거하는 등의 용도로 활용될 수 있습니다.
++ git restore 명령어는 되돌릴 수 없다.
git restore : 변경사항 되돌리기
git restore --staged : 스테이징한 파일 언스테이징하기
git restore --source는 특정 커밋 또는 브랜치의 파일 상태로 현재 작업 디렉토리의 파일을 복원하는 데 사용됩니다.(특정파일만)