Rebase의 기초 Rebase는 두 브랜치를 합치는 방법 중 하나로, Merge와는 다른 방식으로 작동합니다. git rebase 명령을 사용하여 한 브랜치에서 다른 브랜치로 변경사항을 적용합니다. $ git checkout experiment $ git rebase master Rebase는 두 브랜치의 공통 조상에서부터 시작하여 변경사항을 차례대로 임시로 저장하고, 다른 브랜치의 최신 커밋으로 이동한 후 저장해둔 변경사항을 순차적으로 적용합니다. Rebase 후에는 Master 브랜치를 Fast-forward하여 합칩니다. $ git checkout master $ git merge experiment Rebase를 통해 만들어진 커밋 히스토리는 선형적이며 깨끗한 형태를 가지게 됩니다. Rebase..
리모트 Refs 리모트 Refs는 리모트 저장소에 있는 포인터인 레퍼런스로, 리모트 브랜치, 태그 등을 의미한다. $ git ls-remote [remote] # 모든 리모트 Refs를 조회할 수 있습니다. $ git remote show [remote] # 모든 리모트 브랜치와 정보를 보여줍니다. 리모트 트래킹 브랜치 리모트 트래킹 브랜치는 리모트 브랜치를 추적하는 로컬의 레퍼런스이자 브랜치이다. 로컬에서 임의로 조작할 수 없으며, 리모트 서버에 연결할 때마다 자동으로 갱신된다. 이름은 / 형식으로 표현되며, 예를 들어 origin/master는 origin 서버의 master 브랜치를 가리킨다. $ git clone -o booyah # booyah/master 라고 사용자가 정한 대로 리모트 이름을..
Long-Running 브랜치 Git의 3-way Merge를 활용하여 장기간에 걸쳐 브랜치를 다른 브랜치와 여러 번 Merge할 수 있다. 주로 안정 버전의 코드를 유지하는 master 브랜치와 개발 중인 코드를 유지하는 develop이나 next 브랜치를 사용하는 워크플로가 있다. 안정화된 코드를 master 브랜치에 Merge한다. 토픽 브랜치 프로젝트 크기에 상관없이 유용한 토픽 브랜치는 한 가지 주제나 작업을 위해 만들어지는 짧은 호흡의 브랜치이다. 주제를 처리하고 테스트한 후 버그 없이 안정적이면 Merge하는 방식으로 토픽 브랜치를 활용한다. 브랜치 운영 워크플로 실험실이라는 개념을 도입하여 각 브랜치를 하나의 실험실로 생각하고, 코드를 여러 단계로 나누어 안정성을 높여가며 운영할 수 있다...
브랜치 목록 확인 $ git branch iss53 * master testing 여기서 * 기호가 붙은 브랜치는 현재 Checkout된 브랜치를 나타냅니다. 브랜치 목록과 마지막 커밋 확인 $ git branch -v iss53 93b412c fix javascript issue * master 7a98805 Merge branch 'iss53' testing 782fd34 add scott to the author list in the readmes Merge된 브랜치 목록 확인 $ git branch --merged iss53 * master 이 명령을 통해 이미 Merge가 끝난 브랜치 목록을 확인할 수 있습니다. * 기호가 없는 브랜치는 이미 다른 브랜치와 Merge되었으므로 안전하게 삭제할 수..
브랜치의 기초 웹사이트 개발 진행 중 master 브랜치입니다. 새로운 이슈 발생 iss53으로 새로운 브랜치를 생성합니다. $ git checkout -b iss53 iss53 브랜치에서 작업 로컬에서 작업 후 커밋을 합니다. $ vim index.html $ git commit -a -m 'added a new footer [issue 53]' 핫픽스 발생 iss53 별도로 hotfix가 발생하여 먼저 해결합니다. master 브랜치로 옮긴 후 hotfix 브랜치를 생성 후 해결합니다. $ git checkout master $ git checkout -b hotfix $ vim index.html $ git commit -a -m 'fixed the broken email address' hotfi..
Git 브랜치의 특징 Git에서 브랜치는 매우 가볍고 빠르게 생성 및 전환할 수 있습니다. 브랜치를 생성하면 현재의 스냅샷을 기반으로 새로운 브랜치를 만들기 때문에 기존 코드를 복사하는 것이 아니라 순식간에 생성됩니다. 브랜치를 이용하면 코드를 통째로 복사하여 독립적으로 개발할 수 있습니다. Git은 브랜치를 만들어 작업하고, 나중에 변경 사항을 다른 브랜치와 Merge하는 방식을 권장합니다. Git 데이터 저장 방식 개념 정리 Git은 데이터를 스냅샷으로 저장합니다. 커밋 시점에 Git은 현재 스냅샷에 대한 포인터, 저자 및 커밋 메시지와 같은 메타데이터, 이전 커밋에 대한 포인터 등을 가지고 있는 커밋 개체를 저장합니다. 각 파일의 내용은 Blob(데이터의 바이너리 형태)로 저장됩니다. SHA-1를 ..