Git Merge vs Rebase
·
DevTools
두 가지 통합 방식서로 다른 브랜치의 작업을 통합하는 방법은 두 가지다.git merge — 양쪽 브랜치의 끝점을 묶어 새 머지 커밋을 만든다git rebase — 한 브랜치의 커밋들을 다른 브랜치 위에 패치로 다시 적용한다같은 최종 결과(스냅샷)를 만들지만, 이력의 모양이 달라진다.Fast-forward merge — 분기가 없는 경우master에서 hotfix 브랜치를 만들어 작업한 후 다시 master로 돌아와 머지하는 시나리오. master 포인터가 hotfix의 직계 조상이므로, Git은 단순히 master 포인터를 hotfix까지 전진시키는 것으로 머지를 완료한다.$ git switch master$ git merge hotfixUpdating f30ab..87ab2Fast-forward in..
Git 브랜치 — 포인터로 이해하기
·
DevTools
데이터 모델 — 커밋과 부모 포인터Git의 브랜치 동작을 이해하려면 먼저 커밋이 어떻게 저장되는지를 정확히 알아야 한다. Git Basics — 변경 취소·원격 저장소·태그에서 다룬 대로, Git은 데이터를 변경 차이가 아니라 스냅샷으로 저장한다. 커밋을 만들면 Git은 다음 세 종류의 객체를 만든다.객체역할blob파일 하나의 내용을 담는 객체 (이름·경로 정보 없음)tree디렉터리 구조 — 어떤 파일 이름이 어떤 blob을 가리키는지commit루트 tree를 가리키는 포인터 + 메타데이터(작성자, 메시지, 부모 커밋 포인터)예를 들어 파일 3개를 처음 커밋하면 저장소에 객체 5개가 생성된다 — blob 3개 + 루트 tree 1개 + commit 1개. 다음 커밋을 만들면 또 다른 commit 객체가 ..
Git Basics — 변경 취소·원격 저장소·태그
·
DevTools
변경 취소작업하다 보면 어느 단계에서든 변경을 되돌리고 싶을 수 있다. Git이 제공하는 되돌리기 도구는 영역(Working/Staging/Repository)에 따라 다른 명령을 쓴다.되돌릴 수 없는 작업도 있다Git의 거의 모든 작업은 데이터를 추가만 하므로 복구 가능하지만, 일부 되돌리기 명령은 데이터를 실제로 잃게 만든다. 특히 커밋되지 않은 변경(Modified/Staged 상태)을 폐기하면 거의 복구되지 않는다.git commit --amend — 마지막 커밋 수정너무 일찍 커밋했을 때 — 파일을 빠뜨렸거나 메시지를 잘못 입력한 경우 — --amend로 마지막 커밋을 수정할 수 있다.$ git commit -m "Initial commit"$ git add forgotten_file$ git ..
Git Basics — 저장소 만들기와 변경 기록
·
DevTools
저장소 만들기Git을 사용하려면 먼저 Git 저장소가 있어야 한다. 저장소를 시작하는 방법은 두 가지: 기존 디렉터리를 Git 저장소로 만들기 또는 이미 존재하는 저장소를 복제하기.기존 디렉터리 초기화cd /path/to/your/projectgit init이 명령은 현재 디렉터리에 .git 하위 디렉터리를 생성한다. .git 안에는 저장소의 모든 메타데이터와 객체 데이터베이스가 들어간다. 이 시점에서는 아직 어떤 파일도 추적되고 있지 않다. 기존 파일들을 추적하려면 add + commit으로 첫 커밋을 만든다.git add .git commit -m "Initial commit"기존 저장소 복제이미 존재하는 Git 저장소의 전체 사본을 받아오려면 git clone을 쓴다.git clone https:/..
Git 설치와 초기 설정
·
DevTools
Git 설치Git을 사용하려면 컴퓨터에 Git이 설치되어 있어야 한다. 설치 방법은 크게 세 가지: 패키지 관리자, 공식 인스톨러, 소스 빌드. 일반적인 사용 환경에서는 앞의 두 방법이면 충분하고, 최신 버전이 꼭 필요한 경우에만 소스 빌드를 선택한다.Git 버전 호환성Pro Git은 Git 2.x 기준으로 작성되었으며, Git은 하위 호환성이 매우 뛰어나다. 최근 버전이라면 책의 명령어 대부분이 그대로 작동한다.Linux배포판의 패키지 관리자를 사용한다. Fedora · RHEL · CentOS (RPM 계열):sudo dnf install git-all Ubuntu · Debian 계열:sudo apt install git-all기타 Unix 계열 배포판은 Git 공식 다운로드 페이지 참조.macOS..
Git을 이해하기 위한 세 가지 — VCS, 데이터 모델, Three States
·
DevTools
버전 관리란버전 관리(version control) 는 파일의 변경 이력을 시간순으로 기록해두는 작업이다. 변경할 때마다 누가, 언제, 무엇을 바꿨는지 기록을 남기면 다음과 같은 일이 가능해진다.특정 파일이나 전체 프로젝트를 과거의 어느 시점 상태로 복원두 시점 사이에 어떤 변경이 있었는지 비교문제를 일으킨 변경의 시점·작성자·내용 추적실수로 손상·삭제된 파일 복구소스 코드만의 이야기가 아니다. 이미지, 문서, 디자인 레이아웃 등 시간에 따라 바뀌는 거의 모든 파일에 적용할 수 있는 개념이다.왜 필요한가가장 단순한 버전 관리는 파일을 복사해서 다른 이름으로 저장하는 것이다. report.docx, report_v2.docx, report_final.docx, report_final_진짜.docx 같은 형..
Custom Git Alias 목록
·
DevTools
Git을 자주 쓰다 보면 checkout, branch, status, commit 같은 명령어를 하루에도 수십 번씩 타이핑한다. 명령어가 길어서가 아니라, 반복 횟수 자체가 많으니 누적되는 피로가 꽤 된다. Git에는 자주 쓰는 명령어를 짧은 별명으로 등록하는 alias 기능이 내장돼 있다. git config로 한 번 등록해두면 그 컴퓨터의 모든 저장소에서 단축 명령으로 작동한다. 이 글에서는 내가 실제로 사용 중인 alias 7개를 그대로 공유한다.설정 목록~/.gitconfig에 다음 7줄을 한 번씩 실행하면 모든 alias가 등록된다.git config --global alias.co checkoutgit config --global alias.br branchgit config --global..