•오픈 소스 버전 관리 시스템(VCS: Version Control System)
•로컬에서 버전 관리
•소프트웨어 개발 및 소스 코드 관리에 사용
git은 본인의 코드와 그 수정내역을 기록하고 관리하도록 돕는 버전 관리 프로그램이며, 로컬에서 프로젝트의 기록을 스스로 관리할 수 있도록 해줍니다. git을 통해 브랜치를 생성하고 이전 브랜치로 복구, 삭제, 병합이 가능합니다. 하지만 로컬 저장소를 사용하기 때문에 다른 개발자와 실시간으로 작업을 공유할 수 없습니다.
•Git Repository를 위한 웹 기반 호스팅 서비스
•클라우드 서버를 사용해서 로컬에서 버전 관리한 소스코드를 업로드하여 공유 가능
•분산 버전 제어, 액세스 제어, 소스 코드 관리, 버그 추적, 기능 요청 및 작업 관리를 제공
github는 git 저장소를 관리하는 클라우드 기반 호스팅 서비스입니다. git 저장소 호스팅 서비스는 클라우드 기반으로 다른 사람과 소스코드 공유가 가능하며 git의 기본적인 기능을 확장하여 제공합니다. 또한 클라우드 서버에 소스를 올리기 때문에 한 프로젝트에 여러 명의 사람이 참여하여 버전 제어 및 공동 작업이 가능합니다.
Git은 버전 관리 '프로그램'이고
Github는 버전 관리, 소스 코드 공유, 분산 버전 제어 등등이 가능한 원격 저장소라고 생각하면 될 것 같습니다.
add : 수정한 코드를 working area(작업 공간)에서 staging area(커밋될 예정인 영역)으로 스테이징하는 명령어이다. (add . : 모든 수정사항을 스테이징)
commit : 변경사항을 확정하고 git commit -m "메세지" 를 이용해 설명을 추가할 수 있다.
branch : 깃 브랜치를 다루는 명령어 ( -r : 원격 브랜치 목록 보기, -a : 로컬 브랜치 목록 보기, -m : 브랜치 이름 바꾸기, -d : 브랜치 삭제하기 )
checkout : 브랜치를 선택하는 명령어로, 구버전의 명령어이다. (현재는 밑에서 소개하는 switch와 restore로 나누어졌다고 한다)
switch : 브랜치를 변경/생성하는 명령어 (추가로, -c를 붙여주면 새로 생성할 수 있다 )
restore : 작업 트리에서의 수정 내용을 취소하는 명령어 (추가로, --staged 파일명 : 스테이징 사항을 되돌릴 수 있다)
merge : 여러 브랜치를 헤드에 통합하는 명령어 (여기서 헤드란 여러 저장소와 브랜치 사이에서 자신이 어디서 작업 중인지 알려주는 포인터와 같은 역할을 한다)
feat : 새로운 기능 추가
fix : 버그 수정
docs : 문서 수정
style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
refactor : 코드 리펙토링
test : 테스트 코드, 리펙토링 테스트 코드 추가
chore : 빌드 업무 수정, 패키지 매니저 수정
간단히 Git은 로컬에서 버전 관리 시스템을 운영하는 방식이고 Github는 저장소를 깃허브에서 제공해주는 클라우드 서버를 이용한다는 것의 차이입니다. 따라서 다른 사람들과 협업할 경우, 오픈소스를 공유하고 다른 사람들의 의견을 듣고 싶은 경우 등은 Github를 써서 편리하게 기능을 사용할 수 있습니다. 만약 혼자 작업하거나 폐쇄적인 범위 내에서의 협업이라면 Git만 사용해도 무방합니다.
버전 관리 시스템(VCS)이란 쉽게 말해 코드가 변경된 부분을 모두 기억해준다는 의미입니다. 코드가 수정될 때마다 파일로 일일이 따로 저장해주거나 수동으로 백업해두기는 매우 번거로운 일인데, 이런 일을 대신해줍니다. 어떤 부분이 수정됐는지 쉽게 볼 수 있고 수정된 부분을 이전 버전으로 롤백 하는 등의 편리한 기능들을 가지고 있습니다. 코드 수정에 따른 위험성을 줄일 수 있기 때문에 개발자에게 필수적인 시스템이라고 할 수 있습니다.
참조
https://escapefromcoding.tistory.com/281
https://codevang.tistory.com/217