2022. 7. 23. 02:17ㆍGIT
깃의 모든 소스는 깃허브에 공개되어 있고 깃허브에서 git으로 검색하면 된다.
깃 특징
분산형 버전 관리 시스템
원격 저장소와 별개로 개발자 각각의 로컬 컴퓨터에 동일한 복제본 소스 코드를 저장할 수 있다.
복제본이 있으면 중앙 저장소를 조회하지 않아도 개발을 진행할 수 있다.
네트워크나 인터넷이 연결되어 있지 않은 상태에서도 버전을 관리하고 작업 후 인터넷이 연결되면 동기화만 하면 된다.
원격 저장소로 다른 개발자의 저장소와 연결하거나 동기화 작업을 할 수 있다.
또 직접 만든 새 소스 코드를 배포하거나 내려받은 소스 코드를 수정한 후 다시 병합 할 수도 있다.
※ 원격 저장소
원격 서버에서 관리하는 저장소(외부 저장소)
자신의 원격 저장소 외에 타인의 저장소도 포함하고 공유할 수 있다.
백업 기능
자신의 로컬 컴퓨터에 독립적으로 소스의 버전 관리를 할 수 있다.
컴퓨터에 생길 문제에 대비하여 백업이 필요하다.
깃을 사용하면 코드를 원격 저장소에 저장할 수 있다.
로컬 컴퓨터의 저장소를 동기화하여 원격 저장소에 백업한다.
다른 공간에서도 원격 저장소에 저장된 내용을 내려받아 개발을 이어 할 수 있다.
협업 개발 유용
코드 공유
예전에 팀 내에서 코드 공유 시 번거로운 작업이 필요했다.
깃을 사용하면 네트워크를 통해 코드를 좀 더 쉽게 공유할 수 있다.
책임과 기록
깃은 변경된 모든 이력을 저장한다.
누가 언제 어떤 파일을 수정했는지 기록하기 때문에 코드를 좀 더 책임감 있게 작성하고 유지할 수 있다.
깃은 커밋을 거쳐 모든 코드의 수정 이력을 기록한다.
커밋으로 저장된 원본 객체는 수정할 수 없기 때문에 신중하게 작업해야 한다.
원격 공유
분산된 여러 저장소 간에 정보를 주고 받으려면 중앙 서버가 필요하다.
깃에서는 원격 저장소가 중앙 서버 역할을 한다.
자신의 코드 저장소를 원격 서버에 puch하여 저장한다.
또 다른 개발자의 소스를 원격 서버에서 pull 또는 fetch하여 언제든지 내려받을 수 있다.
원격 저장소로 전송된 코드는 여러 개발자와 소스 코드를 공유할 수 있다.
병합
깃은 하나의 소스 코드를 여러 가지 branch로 분기하여 독립된 기능을 구현할 수 있다.
독립적으로 구현된 소스를 주고받으며 필요 시 각 branch를 하나로 병합하기도 한다.
독립적으로 구현된 코드를 수작업으로 병합하는 것은 어렵다.
깃에서는 다양한 병합 알고리즘을 제공하기 때문에 이를 이용해 소스 코드의 충돌을 최소화한다.
공개
원격 저장소를 사용하여 개발 중인 코드를 외부로 공개할 수 있다.
코드를 공개하여 내부 개발자가 만든 기능 한계를 극복하고 외부 개발자와 협업할 수 있다.
외부 개발자는 원격 저장소를 fork하여 소스 코드의 버그를 수정하거나 기능을 개선 할 수 있다.
또 수정한 소스 코드를 pull request하여 기존 코드에 병합할 수도 있다.
※ commit
파일 및 폴더 추가, 변경 사항들을 기록하는 것
※ push
자신의 로컬 저장소에서 변경된 파일을 원격 저장소로 업로드 하는 것
※ pull
원격 저장소의 변경 사항을 자신의 로컬 저장소에 적용
※ fetch
원격 저장소의 변경 사항을 내려받는 것, 병합은 안 함
※ branch
메인 개발 라인에서 분기된 하나의 갈래
새로운 기능을 안전하게 개발하고 싶을 때 추가로 메인 개발 라인에서 분기된 새 개발 라인을 만들어 개발하고 개발이 완료되면 다시 메인 개발 라인에 병합한다.
※ fork
다른 사람의 원격 저장소를 복사해 자신의 원격 저장소를 만드는 것
※ pull request
자신의 로컬 저장소에서 작업한 후 이 작업을 원본 저장소에 반영해 달라고 요청하는 것
깃 동작 5단계
초기화 : 폴더를 깃 로컬 저장소로 변경
커밋 : 변경된 코드의 이력을 기록
브랜치 : 분리 격리된 코드 이력 기록
병합 : 기존 이력과 분리된 이력 통합
푸시 : 로컬 저장소의 이력을 서버로 전송 및 공유
'GIT' 카테고리의 다른 글
[GIT] 환경 설정 (0) | 2022.07.25 |
---|---|
[GIT] 깃 실행해보기 (0) | 2022.07.25 |
[GIT] 소스트리 설치 (0) | 2022.07.24 |
[GIT] 깃 설치 (0) | 2022.07.24 |
[GIT] 버전 관리 시스템 (0) | 2022.07.23 |