본문 바로가기

Git

(4)
Git - SVN과의 비교 면접을 보면서 면접관님께서 Git과 SVN의 차이를 물어보셨었는데, SVN을 쓴게 벌써 5년전일이 되어버렸다.. 막상 차이를 생각하니 떠오르지 않아서 정리를 다시한번 해보고 넘어가보려고한다. (오랫만의 Git 카테고리에 작성하는 글인듯) SVN과 Git의 비교 SVN Git 사용법 간단하며, 쉬움 다소 복잡하고 처음에는 학습하기 어렵다 기능 버전관리에 최적화된 간편한 기능 다양한 기능이 존재. 버전관리의 끝판왕이라 생각한다 프로세스 중앙 집중식 분산 관리식 소스 충돌 위험 매우 높다 권한 설정을 통해 충돌 위험 감소 저장소 백업 여부 저장소 백업이 용이하지 못함 git 저장소만 있으면 Remote 복구는 언제든지 가능 다수 작업 관리 관리에 한계가 존재 분산 작업에 매우 용이하다 작업 내용 복구 불편함 ..
Git - Branching Model 브랜치 전략은 왜필요할까? Git은 복잡하며, work flow는 아무런 제약이 없다. 그렇기 때문에 조직의 특성과 성향에 맞는 Branching Model을 찾아야하며, 일정 규칙이 필요할 것이다. 조직에 맞게 잘 정의한 work flow는 효율을 크게 상승시킬 수 있다. 개발 History 관리 가능 코드 리뷰를 통한 코드의 품질 향상 브랜치 관리 배포 관리를 통한 사고 & 장애 대응가능 (1) Git Flow Model Vincent Driessen이 제시한 model 가장 보편적인 branching model이며, tool도 구현되어 있다. 하지만, 복잡하고 애매하며 특히 개발 이력 관리가 많이 어렵다는 단점이 존재한다. 예를들어, 우아한 형제들에서 제시한 방법이 Git Flow를 Base로 하고..
Git - 동작 정리 (심화편) - fast-forward (빨리감기) : merge를 진행할 때의 방법중의 하나. pull은 fetch + merge의 두가지 동작이 이루어지는데 merge를 진행할 때 보통은 merge commit을 생성하여 합치지만, fast-forward merge는 단순하게 HEAD만 이동시켜서 코드를 업데이트 시켜준다. - fast-forward merge - 3-way merge (출처: backlog.com/git-tutorial/kr/stepup/stepup3_1.html) => 두가지 merge방법 모두 conflict가 일어날 수 있으므로, conflict가 발생할 경우, 풀어주면서 merge를 진행하면 되겠지만, history상으로 보기 좋지 않을 것이다. 그래서 앞서 학습했던 rebase를 사용하..
Git - 동작 정리 (기본편) - 원격 저장소와 로컬 저장소 Git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 제공 - 원격 저장소(Remote Repository): 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소. - 로컬 저장소(Local Repository): 내 PC에 파일이 저장되는 개인 전용 저장소 - 커밋 (commit) : 파일 및 폴더의 추가/변경 사항을 저장소에 기록한다. 일반적으로, 우리가 작업한 내용은 저장(Save)하는 개념이며 Git Branch에서 하나의 작업단위가 될 것이다. (!) 여기서 stage영역이란? : 실제로 커밋을 진행하기 위해 준비하는 공간이라고 생각하면 된다. 그 반대로는 unstage영역이라고 하는데, 파일이 변경은 되었지만 커밋은 하지않는 영역이..