-
Notifications
You must be signed in to change notification settings - Fork 2
Description
빈 디렉토리 Repo에 기록하기
touch .keep
Git commit 분리하기 - Staging Area
# Staging 영역은 작업 디렉토리와 Git 저장소의 변경 이력 사이에 징검다리 역할
# i 옵션을 통해서 큐레이팅 가능
git add -is 옵션을 통해서 Split하고
분리된 라인에 대해서 각 각의 스테이징 여부 선택
GIt merge
3 way merge
서로 다른 브랜치에 공통되는 base branch를 기점으로 충돌을 최소화 시키는 방법
브랜치간의 병합을 진행할 때, base를 기준으로 어떠한 브랜치의 파일이 수정되었는지
확인할 수 있어서 충돌의 문제를 해결하는데 효과적
Fast forward merge
fast-forward 방법은, branch간의 병합을 진행할 때 커밋이 생기지 않고 merge 명령어를
실행하는 브랜치의 Head Commit이 병합 되는 branch의 Head commit으로 이동되는 방식
Git Fetch
git fetch는 로컬 Git에게 원격 저장소에서 최신 메타데이터 정보를 확인하라는 명령을 전달한다
단, fetch는 원격 저장소에 변경사항이 있는지 확인만 하고, 변경된 데이터를 로컬 Git에 실제로 가져오지는 않는다
반면, git pull은 원격 저장소에서 변경된 메타데이터 정보를 확인할 뿐만 아니라 최신 데이터를 복사하여 로컬 Git에 가져온다
git fetch를 사용하면 마지막 pull 이후 원격 저장소 또는 브랜치에 적용된 변경 사항을 확인할 수 있기에
fetch로 변경 사항을 먼저 확인한 후 pull을 실행하는 방법이 보다 안전하다
Git Prune
git prune은 unreachable한 git object들을 "local"에서 clean하는 작업이다
unreachable이란 git tree에 의해 참조되지 않는 gc 대상이 되는 dangling refs 들이다
prune은 remote의 것을 지우는 것이 아닌, local 에서 remote 를 ref 하는 것 중 유효하지 않은 것을 제거하는 작업이다
git prune은 보통 직접 수행되지 않는다
git remote prune과 git fetch --prune도 git prune이 하는 일을 똑같이 한다
remote에 존재하지 않는 refs 를 지워버린 후에 fetch 나 pull 을 수행한다
Git mergetool
Git merge 툴을 이용하여 머지 컨플릭트 시 변경 사항 선택 유무를 하였을 때
실제로 .orig 파일이 생성된다.
해당 파일은 커밋 시에 생성된 파일로 status에 반영되며
변경 사항을 선택하여 해당 파일을 삭제하고 커밋하여 변경 사항을 취사 선택 할 수 있다












