본문 바로가기

프로그래밍/기타

(13)
[Git] 분산 환경에서의 Git 2 - Pro git book, 2nd Edition 정리 비공개 대규모 팀 대규모 팀은 보통 팀을 여러 개로 나눈다. 각 팀이 각각의 feature를 작업하는 상황이라면 회사는 Integration-manager 워크플로를 선택하는게 좋다. 작은 팀이 수행한 결과를 매니저가 Merge 하고 공유 저 장소의 master 브랜치에 업데이트 한다. 공개 프로젝트 Fork 비공개 팀을 운영하는 것과 공개 팀을 운영하는 것은 약간 다르다. 공개 팀을 운영할 때는 모든 개발자가 프로젝트의 공유 저장소에 직접적으로 쓰기 권한을 가지지는 않는다. Git 호스팅 사이트(GitHub, BitBucket, repo.or.cz 등) 대부분은 Fork 기능을 지원하며 프로젝트 관리자는 보통 Fork 하는 것으로 프로젝트를 운영한다. 일단 프로젝트의 웹사이트로 가서 “Fork” 버튼을..
[Git] 분산 환경에서의 Git 1 - Pro git book, 2nd Edition 정리 4.분산 환경에서의 Git 4.1. 분산 환경에서의 워크플로 이번 장에서는 분산 환경에서 Git을 어떻게 사용할 수 있을지 살펴본다. 프로젝트 기여자 입장과 여러 수정사항을 취합하는 관리자 입장에서 두루 살펴본다. 즉, 프로젝트 기여자 또는 관리자로서 작업물을 프로젝트에 어떻게 포함시킬지와 수 많은 개발자가 수행한 일을 취합하고 프로젝트를 운영하는 방법을 배운다. 분산 환경에서의 워크플로 Git에서는 각 개발자의 저장소가 하나의 노드이기도 하고 중앙 저장소 같은 역할도 할 수 있다. 즉, 모든 개발자는 다른 개발자의 저장소에 일한 내용을 전송하거나, 다른 개발자들이 참여할 수 있도록 자신이 운영하는 저장소 위치를 공개할 수도 있다. 중앙집중식 워크플로 중앙 저장소는 딱 하나 있고 변경 사항은 모두 이 중..
[Git] Git 브랜치 2 - Pro git book, 2nd Edition 정리 3.4. 브랜치 워크플로 Long-Running 브랜치 Git 개발자가 많이 선호하는 워크플로가 하나 있다. 배포했거나 배포할 코드만 master 브랜치에 Merge 해서 안정 버전의 코드만 master 브랜치에 둔다. 개발을 진행하고 안정화하는 브랜치는 develop 이나 next 라는 이름으로 추가로 만들어 사용한다. 이 브랜치는 언젠가 안정 상태가 되겠지만, 항상 안정 상태를 유지해야 하는 것이 아니다. 개발 브랜치는 공격적으로 히스토리를 만들어 나아가고 안정 브랜치는 이미 만든 히스토리를 뒤따르며 나아간다. 토픽 브랜치 토픽 브랜치는 어떤 한 가지 주제나 작업을 위해 만든 짧은 호흡의 브랜치다. 브랜치 각각은 독립돼 있기 때문에 매우 쉽게 컨텍스트 사이를 옮겨 다닐 수 있다. 묶음별로 나눠서 일하..
[Git] Git 브랜치 1 - Pro git book, 2nd Edition 정리 3.1.브랜치란 무엇인가 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다. 사람들은 브랜치 모델이 Git의 최고의 장점이라고, Git이 다른 것들과 구분되는 특징이라고 말한다. 당최 어떤 점이 그렇게 특별한 것일까. Git의 브랜치는 매우 가볍다. 순식간에 브랜치를 새로 만들고 브랜치 사이를 이동할 수 있다. 다른 버전 관리 시스템과는 달리 Git은 브랜치를 만들어 작업하고 나중에 Merge 하는 방법을 권장한다. 브랜치란 Git의 브랜치는 커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것이다. 아래와 같이 git branch 명령으로 testin..
[Git] Git의 기초 2 - Pro git book, 2nd Edition 정리 2.3. 커밋 히스토리 조회하기 git log : Git의 히스토리를 조회하는 명령어 특별한 아규먼트 없이 git log 명령을 실행하면 저장소의 커밋 히스토리를 시간순으로 보여준다. 즉, 가장 최근의 커밋이 가장 먼저 나온다. 그리고 이어서 각 커밋의 SHA-1 체크섬, 저자 이름, 저자 이메일, 커밋한 날짜, 커밋 메시지를 보여준다. -p, --patch: 각 커밋의 diff를 보여줌 -(정수): 정수개만큼의 결과만 보여줌 --since : 시간을 기준으로 조건에 해당하는 결과만 보여줌. “2008-01-15”나 “2 years 1 day” 같은 다양한 옵션을 지원함 --stat : 각 커밋의 통계 정보를 조회, 어떤 파일이 수정되었는지, 얼마나 많은 파일이 변경되었는지, 얼마나 많은 라인을 추가하거..
[Git] Git의 기초 1 - Pro git book, 2nd Edition 정리 2.1. Git 저장소 만들기 Git을 사용하는 방법을 알고 싶은데 한 챕터밖에 읽을 시간이 없다면 이번 챕터를 읽어야 한다. Git에서 자주 사용하는 명령어는 모두 2장에 등장한다. Git 저장소 만들기 아직 버전관리를 하지 않은 로컬 디렉토리 하나를 선택해서 Git 저장소를 적용하는 방법 다른 어딘가에서 Git 저장소를 Clone 하는 방법 기존 디렉토리를 Git으로 만들기 해당 디렉토리로 가서 명령어를 입력한다. 시스템마다 디렉토리 이동 명령어가 조금 다른 점을 주의하자. $ git init 이 명령은 .git 이라는 하위 디렉토리를 만든다. .git 디렉토리에는 저장소에 필요한 뼈대 파일이 들어 있다. 이 명령만으로는 아직 프로젝트의 어떤 파일도 관리하지 않는다. Git이 파일을 관리하게 하려면 ..
[Git] Git 시작하기 - Pro git book, 2nd Edition 정리 1. 시작하기 1.1. 버전관리란? 이번 장에서는 Git의 탄생 배경, Git을 사용하는 이유, Git을 설정하고 사용하는 방법을 터득할 것이다. 버전관리란? 버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템 소스 코드는 물론 모든 컴퓨터 파일의 버전 관리 가능 프로젝트를 통째로 이전 상태로 되돌릴 수 있고, 시간에 따라 수정 내용을 비교해 볼 수 있고, ㄱ누가 문제를 일으켰는지 추적할 수 있고, 누가 언제 만들어낸 이슈인지도 알 수 있다. 로컬 버전 관리 간단한 방법으로, 버전을 관리하기 위해 디렉토리로 파일을 복사하는 방법 간단하지만, 뭔가 잘못되기 쉽다. 중앙집중식 버전 관리(CVCS) 다른 개발자와 함께 작업해야 하는 경우 생기는 문제를..
[Git] Git Branch 관리 전략 깃으로 협업을 잘 하려면 명령어만 알고 우다다 쓰는게 아니라 브랜치를 어떻게 관리할건지 생각하고 전략을 잘 짜야 합니다. 브랜치 관리 전략에 어떤 상황에서도 사용 가능한 만능 솔루션은 존재하지 않기 때문에, 깃을 사용하는 구성원들이 어떤 상황인지, 프로젝트가 어떻게 구성되는지를 잘 구성하여 브랜치 전략을 세워야 합니다. gitflow 5가지의 브랜치가 존재합니다. 1. master(main): 기준이 되는 브랜치로 제품을 배포하는 브랜치 2. develop: 개발 브랜치로 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 Merge 3. feature: 단위 기능을 개발하는 브랜치로 기능 개발이 완료되면 develop 브랜치에 Merge 4. release: 배포를 위해 master 브랜치로 보내기 ..