TIL - 20250512

juni·2025년 5월 12일

TIL

목록 보기
5/317

1. Git Merge

Git에서 'Merge' 는 여러 브랜치에 분산된 코드 변경 사항을 한 브랜치로 합치는 과정이다.

  • Fast-Forward Merge : main의 다른 커밋 사항이 없을때 병합하려는 브랜치의 커밋으로 HEAD(커밋 포인트)가 이동한다.

  • 3-Way Merge : 두 브랜치를 병합하는 방법(병합 커밋)으로 새로운 브랜치에서 작업이 진행되는 동안 main의 작업도 진행 되었을때 Merge 하는 방법이다.

2. Git Conflict

Git 충돌(conflict)는 두 개 이상의 변경 사항이 Git의 병합 과정에서 서로 충돌할 때 발생하는 문제를 의미한다. (주로 여러 사람이 동시에 같은 파일의 같은 부분을 변경했을 때 이 문제가 발생함)

Conflict 해결 방법

Git 충돌을 해결하는 단계는 다음과 같습니다:

  1. git status를 실행하여 충돌이 발생한 파일을 확인합니다.
  2. 충돌이 발생한 파일을 열고 충돌 마커를 찾습니다.
  3. 각 충돌에 대해 어떤 변경 사항을 유지할지 결정합니다. 이를 위해 충돌 마커 사이의 코드를 원하는 상태로 직접 수정해야 합니다.
  4. 충돌이 해결되면, 충돌 마커를 모두 제거합니다 (<<<<<<<, =======, >>>>>>>).
  5. 파일을 저장하고 닫습니다.
  6. git add를 사용하여 충돌이 해결된 파일을 스테이징합니다.
  7. git commit를 실행하여 충돌이 해결된 상태를 커밋합니다.

이런 방식으로 Git 충돌을 해결하고 코드를 정상적으로 병합할 수 있습니다. 이 과정에서 중요한 점은 충돌이 발생한 모든 부분을 정확히 처리하고, 모든 충돌 마커를 제거하는 것입니다. 그렇지 않으면 Git은 여전히 충돌이 해결되지 않았다고 인식합니다.

3. Git Diff

git diff 는 소스코드 또는 파일에서 변경된 부분을 비교하고 이를 시각적으로 표시해주는 역할을 한다.

git diff HEAD : add 하고나서도 변경사항을 비교할 수 있음.

git diff 브랜치명or커밋해시..브랜치명or커밋해시 : 브랜치간 또는 커밋간의 변경점을 볼 수 있음.

4. Git Stash

git stash는 git에서 제공하는 일시적인 작업 저장소입니다. (다른 브랜치를 잠깐 가봐야할 때 stash를 이용)

  1. 작업 중인 브랜치 전환
  2. 테스트와 디버깅
  3. 중요하지 않은 변경사항 보관

git stash save(생략가능) -> git stash apply : stash 저장 및 불러오기
git stash pop : stash 불러오면서 삭제
git stahs drop stash@{n} : n번 stash 삭제
git stash clear : stash 전부 삭제

5. Detached HEAD

Detached HEAD 상태란, 특정 브랜치가 아닌 커밋에 직접 이동한 상태를 말합니다.

  • 보통 특정 커밋의 내용을 검토하거나, 특정 커밋 기반으로 새 브랜치를 만들 때 사용합니다.

git checkout [커밋해시] : 커밋해시로 HEAD 이동

  • 이동한 커밋해시에서 새로운 브랜치를 만들 수도 있다.
  • git checkout HEAD~[n] : n번째 전 커밋으로 돌아갈 수 있음.

6. Git Restore

Git 2.23 버전에서 처음 소개된 명령어로, 작업 디렉토리(애드 전)나 인덱스의 변경사항(애드 후 커밋 전)을 특정 커밋의 상태로 되돌리는 데 사용됩니다. 이는 예기치 않게 수정한 파일을 원래 상태로 되돌리거나, 커밋하지 않은 변경사항을 제거하는 등의 용도로 활용될 수 있습니다.

++ git restore 명령어는 되돌릴 수 없다.

git restore : 변경사항 되돌리기
git restore --staged : 스테이징한 파일 언스테이징하기
git restore --source는 특정 커밋 또는 브랜치의 파일 상태로 현재 작업 디렉토리의 파일을 복원하는 데 사용됩니다.(특정파일만)

0개의 댓글