[WEB #6] Git & GitHub로 프로젝트 관리하기
Git
- Git은 분산 버전 관리 시스템(Version Control System(VCS))으로 변경 사항을 추적하는 시스템이다.
- git 외에도 CVS, mercurial 등 여러 VCS가 있으나, git은 가장 보편적으로 쓰이는 시스템이다.
- 변경 사항을 파일 별로 모두 기록한다 (point!)
=> 그 시점에 (날짜, 시간, 작성자, 내용 등이) 어떤 상태였는지 캡쳐해두는 것(version), 즉 버전 관리를 해주는 것인데 덕분에 우리는 수정 사항이 생길 때마다 파일을 만들어 두지 않아도 되고, (최종, 최최종..)
- 개발자들은 프로젝트의 변경 사항을 기록하고, 특정 시점의 버전으로 언제든 돌아갈 수 있다.
- 이런 버전 관리 시스템은 많은 사람들이 효율적으로 함께 작업하고, 프로젝트를 중심으로 협업할 때 사용할 수 있다. 각 개발자가 자신만의 프로젝트 버전을 본인 컴퓨터에 갖게되고, 나중에 개별 버전의 프로젝트를 병합하여 기준이 되는 버전의 프로젝트에 적용 할 수 있게 된다.
코드 버전을 관리하는 이유
- 수정할 때마다 파일을 새로 만들면 관리가 힘들어진다.
- 언제든 이전 버전의 코드로 돌아갈 수 있다. (중요)
- 이력을 남기기 위해 (누가 짠 코드인가..!)
- 하나의 프로젝트를 두고 여러명의 개발자들이 효율적으로 협업할 수 있다.
GitHub
- Git을 사용한 프로젝트들의 저장소 (깃허브의 캐릭터는 "옥토캣"이다.. 문어를 생각하면 이해가 된다!)
*로컬 프로젝트 repository를 원격 클라우드 기반 GitHub 저장소에 업로드 할 수 있고, public repository 들을 통해 다른 개발자들과 교류할 수도 있다.
- 개발자들의 Social Network : 유저 follow, 협업 등 교류의 장
Git vs GitHub
- Git은 버전 관리 시스템으로, 시간이 지남에 따라 파일의 변경 사항을 추적하는 도구이고, GitHub은 Git을 사용하는 프로젝트를 위한 호스팅 서비스라고 볼 수 있다.
- Git은 개별 컴퓨터에 설치되는 로컬 프로그램이고, GitHub는 깃으로 생성된 폴더를 올리는 공간이다. (따라서, 인터넷이 안되는 환경에서도 Git은 사용할 수 있다.)
가장 중요하고 기본적인 명령어
- CLI(Command Line Interface). 즉, 명령어를 터미널로 직접 입력하는 방식으로 작성하는 것이 좋다. 좀 더 간편하게 사용하는 GUI(Graphical User Interface) 방식이 있지만, 서버로만 작업해야하는 경우 등 모든 환경에서 작업할 수 있는 개발자가 되어야 한다.💪
- git 시작 :
git init
*해당 폴더 안에 들어가야 함(중요!)
- git init을 하면 git 파일이 생성된다 (.git)
- git 상태 확인 :
git status
- commit 전에 변경 사항들 확인할 수 있다.
- 파일 수정 이력 기록 준비 :
git add
- '장바구니 담기'와 같다. 아직 업로드 확정은 안 한 상태
- 파일 수정 이력 기록 :
git commit
- '구매를 확정한 상태'와 같다. commit을 하면 고유번호(commit hash)가 생기는데 고유번호 덕분에 우리가 전 버전으로 돌아갈 수 있는 있다.
- commit 이력 보기 :
git log
- git status와 구분해야 한다. commit한 내역들을 볼 수 있다.