Git이란
오픈소스로 제공되는 분산형 버젼 관리 시스템
⇒ 즉, 소스코드를 효과적으로 관리하기 위해 사용되는 툴
Git을 만든 이유
오픈소스형 운영체제인 Linux의 코드 관리를 위해 생겨남
Git의 장점
협업을 할 때 누가 어디를 어떻게 고쳤는지 효과적으로 관리하기 좋은 도구
Git이 할 수 있는 일
- 버젼관리
→ 일반 문서는 버전을 달리해서 저장하기 때문에 어떤 것이 변했는지 알기 어려운 반면, Git은 변경 이력을 저장하기 때문에 누가 언제 어디를 수정했는지 알 수 있다.
- 백업 기능
→ Git의 백업으로 Github을 사용
⇒ 즉, Local의 Git 파일과 Git Repository를 Github에 백업용으로 저장
- Git을 이용한 협업
→ Git과 Github을 이용해 팀원간 변경 이력을 이용해 협력 가능
→ 오류 발생시 식별에 유용하다
Git vs Github
- Git : Local 상에 설치가 가능한 소프트웨어
- 코드의 변경 이력이 Local Git의 Repository에 저장 및 버전 관리 도구
- Github : 온라인 백업과 공유를 통해 협업이 온라인 코드 저장소
- GUI로 구현되어 있으며 Git Repository를 위한 호스팅 된 웹 서비스
Git을 관리하는 프로그램의 종류
- Github Desktop
- 장점 : 사용하기 쉬움
- 단점 : Github에서 제공하는 고급 기능은 사용이 어려움
- TortoisGit
- 장점 : 마우스 우클릭으로 간편히 사용 가능
- 단점 : 기능 및 안전성이 부족하고 윈도우에서만 사용 가능
- Source Tree
- 장점 : Git의 거의 모든 기능을 구현해놓음
- 단점 : 프로그램을 제대로 구현하려면 많은 기능에 익숙해져야 함
- CLI(bash 프로그램)
- 장점 : 사용에 익숙해지면 GUI(Github)보다 빠르고 GUI에서 사용 불가능한 기능도 사용 가능
- 단점 : GUI보다 사용하기 어렵다. 또한 터미널에서 명령어를 입력해서 Git을 사용하기 때문에 리눅스와 Git 명령어에 대해 어느정도 지식이 필요하다.
Git에서 버젼을 관리하는 방법
파일 자체는 그대로 두고 파일을 수정할 때마다 어떤 것이 변경됐는지 변경사항과 변경 시점에 따라 시간을 이용해서 관리
→ 따라서 파일을 되돌릴 수 있는 작업도 존재
Git의 파일 종류
- Untracked File : git에서 한 번도 수정하지 않은 파일
- Tracked File : git에서 1회 이상 commit된 파일 + 최신 버전에서 수정되지 않은 파일
- Modified File : Tracked File을 수정한 파일
- Staged File : Staging되어 있는 파일
Git의 파일 상태
Untracked → Unmodified → Modified → Staged → Unmodified
→ (Modified → Staged → Unmodified) → 반복...

Git에서 버젼을 관리하는 3단계
- Working Tree 단계(working directory라고도 불림)
→ 파일이 생기거나 수정될 경우 해당 단계로 변경됨
- Stage 단계(눈에 보이지 않는 단계)
→ 수정된 파일을 이용해 새로운 버젼을 만들고자 할 때 그 버전이 대기하는 장소
- Repository단계(눈에 보이지 않는 단계)
→ Stage단계에서 대기하던 파일을 새로운 버전으로 만들어주고, 그 파일을 저장해주는 장소
→ 바로 위 파일의 상태 부분에서 Modified, Staged, Unmodified 부분을 생각하면 된다.
Branch란
프로그램을 개발할 때 여러 갈래로 퍼지는 변경사항의 흐름을 가리키는 말
→ master branch에서 새로운 branch(독립적으로 개발 가능한 Line)를 생성할 때 사용
Branch가 필요한 이유
제대로 동작하는 main 코드는 그대로 둔 채로 main 코드를 수정하거나 다른 기능을 추가하는 코드를 새롭게 작성할 수 있다.
master branch
Git으로 버전관리를 시작하게 되면 기본적으로 생기는 branch
→ 사용자가 Commit할때마다 master branch는 최신 Commit을 가리킨다.
- HEAD → master : 해당 branch가 master라는 것을 의미
- HEAD : 여러 branch 중 현재 작업중인 branch가 무엇인지 알려주는 포인터
Github로 협업하기 및 충돌 해결법(confit)
협력자(collaborator) 등록
-
협력자 : Github Repository를 만든 사람
-
Github 레포지토리 → Settings → Collaborator → Add people 클릭

-
팀원들의 username혹은 email로 추가 (팀원들은 초대 수락)

6. 정리하기
- Git의 파일 상태
Untracked → Unmodified → Modified → Staged → Unmodified
→ (Modified → Staged → Unmodified) → 반복...