[Git 스터디] 01: 시작하기
Git-book을 읽고 목차별 내용 정리를 통한 학습을 10주간 스터디를 시작한당 !_! 😺
개발자 협업에서 git
은 필수라고 생각한다.
지금도 코드를 올리는 데는 사용은 하고 있지만, git
에 대한 자세한 내용과 사용법은 모르고 있었다.
협업 시에도 무리없이 잘 사용할 수 있도록 빠삭하게 습득해 보고자 한다 ~!~!
버전 관리
- 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템.
- 거의 모든 컴퓨터 파일의 버전을 관리할 수 있다.
로컬 버전 관리
버전 관리를 위해 디렉토리로 파일을 복사하는 방법은 실수로 지워버리거나 잘못고치거나... 하는 실수가 발생할 수 있다.
-> 프로그래머는 오래전에 VCS
를 만들어 데이터베이스를 사용해서 파일 변경 정보를 관리했다.
VCS
도구 중, RCS
(Revision Control System)는 많은 회사가 쓰고 있고, Patch Set
(파일에서 변경되는 부분)을 관리한다.
Patch Set
은 특별한 형식의 파일로 저장하고, 일련의 Patch Set
을 적용해서 모든 파일을 특정 시점으로 되돌리는 것이 가능하다.
CVCS
(중앙집중식 버전 관리)
다른 개발자와 함께 작업해야 하는 경우에 생기는 문제를 해결하기 위해 CVCS
(중앙집중식 VCS)가 개발됐다.
CVCS
환경은 관리자가 누가 무엇을 할지 꼼꼼히 관리할 수 있다는 점, 모든 클라이언트의 로컬 데이터베이스를 관리하는 것 보다 VCS
하나를 관리하기가 훨씬 쉽다는 점에서 로컬VCS
에 비해 장점이 많다.
하지만, 단점도 존재한다.
대표적인 것으로, 중앙 서버에 발생한 문제가 있다.
만약, 서버가 일정 시간동안 다운이 된다면, 그동안은 아무도 다른사람과 협업할 수 없고, 백업할 방법도 없다.
또한, 중앙 데이터베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃게된다.
-> 사람마다 하나씩 다긴 스냅샷은 괜찮다!
로컬 VCS
시스템도 비슷한 결점이 있고, 위와 같은 상황이 생기면 모든 것을 잃는다.
DVCS (분산 버전 관리 시스템)
Git
, Mecurial
, Bazaar
, Darcs
같은 DVCS
에서의 클라이언트는 단순히 파일 마지막 스냅샷을 Checkout하지 않고, 그냥 저장소를 히스토리와 더불어 전부 복제한다. 그래서 서버에 문제가 생기면 이 복제물로 다시 작업을 할 수 있다.
클라이언트 중 아무거나 골라도 서버를 복원할 수 있고, clone
은 모든 데이터를 가진 진정한 백업이다.
대부분의 DVCS
환경에서는 리모트 저장소가 존재한다.
리모트 저장소가 많을수도 있어서, 사람들은 동시에 다양한 그룹가 다양한 방법으로 협업할 수 있다.
Git 기초
스냅샷
Git은 데이터를 스냅샷의 스트림처럼 취급한다.
Git
은 데이터를 파일 시스템 스냅샷의 연속으로 취급하며, 크기가 아주 작다. 또한, commit
하거나 프로젝트의 상태를 저장할 때마다 파일이 존재하는 그 순간을 중요하게 여긴다.
파일이 달라지지 않았으면 성능을 위해서 파일을 새로 저장하지 않고, 이전 상태의 파일에 대한 링크만 저장한다.
명령
Git
은 거의 모든 명령이 로컬 파일과 데이터만 사용하기 때문에 네트워크에 있는 다른 컴퓨터는 필요 없다. 프로젝트의 모든 히스토리가 로컬 디스크에 있으므로 모든 명령이 순식간에 실행된다. (즉, 오프라인 상태이거나 VPN에 연결하지 못해도 업무가 가능하다.)
Git의 무결성
Git
은 데이터를 저장하기 전에 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리한다.
-> 체크섬을 이해하는 Git 없이는 어떠한 파일이나 디렉토리도 변경할 수 없다
체크섬(checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다. 통신에서 순환 중복 검사(CRC)를 체크섬이라고 말하기도 한다. 출처 : 체크섬 - 위키백과
데이터 추가
Git
데이터베이스에 데이터가 추가 되면, 되돌리거나 데이터를 삭제할 방법 x
다른 VCS
처럼 Git
도 commit
하지 않으면 변경사항을 잃어버릴 수 있다.
-> 변경 후에는 commit
하기!!
세 가지 상태
Git
은 파일을 Committed
, Modified
, Staged
상태로 관리한다.
-
Committed
: 데이터가 로컬 데이터베이스에 안전하게 저장된 것. -
Modified
: 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것. -
Staged
: 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태. -
Git directory
:Git
이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳.
다른 컴퓨터에 있는 저장소를Clone
할 때Git
디렉토리가 만들어짐. -
워킹 트리 : 는 프로젝트의 특정 버전을
Checkout
한 것.
Git directory
는 현재 작업하는 디스크에 있고, 그directory
안에 압축된 데이터베이스에서 파일을 가져와서 워킹 트리를 만든다. -
Staging Area
: `Git directory
에 있다.
단순한 파일이고 곧commit
할 파일에 대한 정보를 저장.
Git
에서 기술용어로“Index”
라고 하지만,“Staging Area”
라는 용어를 써도 상관 x
✨ Git
으로 하는 일
1) 워킹 트리에서 파일을 수정한다.
2) Staging Area
에 파일을 Stage
해서 commit
할 스냅샷을 만든다.
( 모든 파일을 추가할 수도, 선택하여 추가할 수도 있음)
3) Staging Area
에 있는 파일들을 commit
해서 Git directory
에 영구적인 스냅샷으로 저장한다.
Git directory
에 있는 파일들 =Committed
상태.- 파일을 수정하고
Staging Area
에 추가 =Staged
Checkout
하고 나서 수정했지만, 아직Staging Area
에 추가하지 않음 =Modified
학습 : Git-book
Author And Source
이 문제에 관하여([Git 스터디] 01: 시작하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gyomni/Git-스터디-01-시작하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)