Git Git에 대한 단상

황제낙엽 2016.05.12 16:45 조회 수 : 834

버전 관리 시스템이란?

- 파일의 상태를 주시하고 있다가 파일이 변겅된 경우 해당 변경 사항에 대한 태그를 표시한 후 사용자가 원하는 경우 표시해둔 단계로 복귀할 수 있는 시스템

 

VCS의 사용이유

- 여러 명이 공동으로 개발할 경우 소스코드의 관리가 어려움

- merging에 시간과 노력이 많이듬

- 위의 내용을 줄여서 생산성을 향상 시키기 위해 VCS를 사용함

- 의도치 않았던 상황에 들어서거나 문서의 내용 중 일부를 이전 상태로 되돌려야하는 경우 안전장치 역활을 함

- 데이터 손실 걱정 없이 이전 단계 어디로든 이동할 수 있음

 

버전 관리시스템의 종류

- 로컬 버전관리시스템

- 중앙 집중형 버전관리시스템

- 분산 버전 관리시스템

 

분산 버전 관리시스템의 장점

- 서버와 지속적으로 연결돼 있는 상태를 유지하지 않더라도 로컬에 변경 사항을 기록함

- 서버에 저장되어 있는 파일들에 의존적이지 않음

- 협업 시 각기 다른 기기에 저장된 이력에 의존적이지 않음

- 작업을 재사용할 수 있음

 

Git의 장점

- 원자성: 호출과 응답 사이에 발생하는 단일 인스턴트로 작업하는 속성

- 성능: 깃은 로컬에서 파일을 다루기 때문에 성능이 뛰어남. 타 버전 관리시스템의 경우 각각의 파일들에 대한 차이점만 기록하지만 Git의 경우 차이점을 저장하는 대신에 파일 집합들에 대한 스탭샷을 만들어서 다룸. 따라서 이전 작업으로 복구할 때도 스냅샷 기반으로 한번에 옮겨갈 수 있음. 복사 파일을 만드는 건 아니고 해당 파일에 대한 변경내용이 없다면 참조점만 만들고 변경사항이 있는 파일 내용만 저장함. 스냅샷으로 복구할때는 참조가 걸려는 있는 파일을 기준으로 스냅샷 기준으로 돌아감. 이런 특성을 이용해 버전 이력을 가능한 작은 공간을 이용해서 관리가 가능함.

- 보안성: Git은 모든 데이터를 저장하기에 앞서 SHA-1 해시를 이용해 체크섬을 만들어 데이터를 관리함. 이후에는 체크섬을 이용해 참조함. Git 없이는 어떤 파일이나 디렉토리의 콘텐츠도 변경할 수 없음.

- 타 버전 관리시스템에 비해서 분기(branching)와 병합(merging)이 훨씬 쉽기 때문임

 

고려점

- 깃을 잘 사용하기 위해서는 개발할 때 기능을 최소단위로 쪼개고 그 단위 기능별로 분기를 생성하고 단위 기능을 병합하는 것이 좋음

 

기타

- 리눅스 커널을 만든 리눅스 토발즈가 Git 프로젝트의 창시자임

 

 

Git을 이용해 버전 관리할 때 작업공간(worksapce)에서 필요로 하는 개념

- 초기화 절차: 초기화는 디렉토리를 지정하는 절차임.

- 저장소에 파일 추가

- 추가 파일 커밋

- 체크아웃

- 리셋

번호 제목 글쓴이 날짜 조회 수
79 [Gemini] branch 와 worktree 의 차이점 황제낙엽 2026.09.27 15
78 버전 관리 이슈 케이스 (1) : 장기적으로 pull 하지 않은 개발자의 대량의 merge 이슈 발생 file 황제낙엽 2026.05.13 480
77 sourcetree - 특정 커밋으로 프로젝트 변경 황제낙엽 2025.08.26 676
76 git clone시 보안에 취약하지만 사용자 아이디와 비번 저장해놓고 사용하기 황제낙엽 2025.08.05 683
75 cherry pick 내가 원하는 커밋만 가져오기 file 황제낙엽 2022.02.17 1051
74 Git Extensions Online Manual 황제낙엽 2022.02.17 5441
73 TortoiseSVN 초보자 가이드 file 황제낙엽 2022.02.09 973
72 [TortoiseSVN] SVN Revision 되돌리는 법 file 황제낙엽 2022.02.09 2608
71 심플한 커밋 이력 조회 (git log --pretty=format) [2] 황제낙엽 2022.01.12 1078
70 Git 특정 폴더 및 파일만 clone 하기 (작성중) 황제낙엽 2021.10.08 1018
69 git remote set-url file 황제낙엽 2021.09.03 909
68 git clone [bare/mirror] 정리 file 황제낙엽 2021.09.03 1493
67 Git Repository 이동하기 황제낙엽 2021.09.02 912
66 유용한 Git 명령어 몇가지 황제낙엽 2021.09.02 924
65 Git의 4가지 영역 황제낙엽 2021.09.02 907
64 Git bare repository 황제낙엽 2021.09.02 834
63 git reset의 3가지 옵션 제대로 이해하기 file 황제낙엽 2021.07.31 916
62 이전 커밋으로 되돌리기 (revert, reset) file 황제낙엽 2021.07.31 1075
61 TortoiseSVN - add to ignore list file 황제낙엽 2021.06.04 1176
60 Ubuntu 에 Git 설치 황제낙엽 2020.09.13 937