본문 바로가기

PROGRAMMING/GIT

[GIT] 용어 정리 & Index의 존재 이유?

현직장 오면서 svn을 주로 써서 다시 한번 정리 

 

GIT / SVN

- 둘다 버전 관리 도구 (Version Control)

- 여러사람이 같은 프로젝트를 작업 할 때 각자가 작업한 내용을 동기화 하는 작업을 자동화 하기 위해 사용

- 변경사항 추적에 용이

- 과거의 어느 시점으로 복귀가 용이

- 브랜치를 활용해 현 프로젝트에 영향을 적게 주며 신규 개발 가능

 

차이점

- SVN은 히스토리가 서버에 저장, GIT은 로컬에 저장소 자체를 복제 버전정보를 갖고있는다.

  이로인해 깃이 중앙서버의 장애로부터 영향을 덜 받는다.

- GIT은 파일을 변경 목록이 아니라 스냅샷으로 관리한다는데 더 공부해봐야 알것같다.

- 이 외 로컬저장소의 유무로 인한 개발 자유도 상승 및 전체적으로 GIT의 장점이 더 많아보이는것이 현실

용어 설명
Repository 저장소. 로컬폴더, 깃허브 저장공간 등등을 포함한다.
Clone 로컬에 아무것도 없는 상태에서 데이터를 가져오는 것.
Commit 저장 체크포인트 리비전, 로컬 저장소에 저장하는 것
Branch 메인 스트림에서 벗어나 독립적인 작업을 하기 위한 개념
다른 브랜치의 영향을 받지 않기 때문에 동시에 여러명이 다른작업을 진행할 수 있다.
Branch head 가장 최근 사용중인/커밋된 브랜치
Check out 업데이트. 일부 또는 전체를 업데이트 받는다.
깃 로컬 db로 부터 불러오며, 수정중인 내용이 전부 덮어 씌워 질수있다.
Fast forward  메인에서 브랜치를 따서 작업 후 커밋을 하려고 보니
메인에 업데이트 된 내용이 있을 경우, 메인 브랜치 최근 변경 내용을 내 브랜치로 업데이트를 받는데
이걸 패스트 포워드라고 한다. 
Fetch 원격 저장소로부터 필요한 파일 다운, pull보다는 신중하게 작업해야할 때 주로 사용
Merge 소스를 합치는것
Index 커밋하기전 중간 단계의 스테이지 공간
Work Tree 현재 내가 작업중인 공간
Conflict 서로 같은 소스를 수정했을 때 merge fail이라고 알려주는데
이런 상황을 충돌(=conflict)이 낫다고 한다.
Pull Fetch then Merge, 로컬에 이미 있고 수정상태 반영을 위해 하는 작업
Push 로컬의 수정내용을 원격 저장소에 저장하는 것

 

찾아보면서 

Index라는 개념이 왜 있어야 하는지에 대한 의문이 생김

생각보다 이런 의문을 갖는 사람들이 많앗다

commit전 add를 왜 궂이 해야하는가