[git, github]
프로젝트 개발을 진행하면 다른 개발자와의 협업이 필요하게 되고 이때 깃허브를 이용하게 된다.
깃과 깃허브란 무엇인지, 기본적 용어와 작업 명령어에는 어떤 것이 있는지, 이들의 사용법에 대해 정리해보려고 한다.
git이란?
git이란 소스코드를 효과적으로 관리하기 위해 개발된 분산형 관리시스템으로
여러 개발자가 협업하는 프로젝트에서 소스의 변화를 분산해서 추적할 수 있고,
프로젝트를 효율적으로 관리할 수 있도록 도와주는 협업도구이다.
git에는 크게 세 가지 장점이 존재한다.
- 동일한 파일을 여러 개발자가 동시에 개발할 수 있다.
- 작업 파일에 대한 변경 정보를 실시간으로 저장해 준다.
- 동일한 파일에 대한 각각 다른 버전을 보관할 수 있다.
이 밖에도 아래와 같은 특징들이 있다.
- 모든 파일의 변화를 기록한다.
- 소스코드가 변경된 이력을 확인할 수 있다.
- 특정 시점으로 돌아갈 수 있다.
- 저장된 버전과 비교 가능하다.
- 작업파일이 충돌하면 경고 메시지가 발생한다.
github란?
github란 현재 가장 인기 있는 버전관리 웹 호스팅 서비스로 클라우드에 있는 깃 제공자이다.
영리적인 서비스와 오픈소스를 위한 무상 서비스를 모두 제공한다.
한마디로 컴퓨터에 존재하는 깃 히스토리를 가져와서
깃허브라는 웹사이트 (https://github.com/) 에 푸시하면 깃을 공유하는 모든 사용자가 변화내용을 확인할 수 있다.
github 기본 용어 종류
저장소(Repository)란?
간단하게 말하면 파일이나 폴더를 저장해 두는 곳이다.
- 장점: 변경이력별로 파일을 구분 저장가능하다. 저장소를 통해서 작업자가 변경한 모든 히스토리를 확인 가능하다.
- 원격저장소( Remote Repository): 원격서버에 있는 저장소로 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소이다.
- 로컬저장소( Local Repository): 개발자의 내 PC에 파일이 저장되는 개인 전용 저장소이다. 작업 디렉터리, 스테이징 영역, 로컬 저장소로 구분한다.
- 작업 디렉터리(Working Tree): pc에서 현재 작업 중에 있는 디렉터리이다. git에서 관리는 하지만 추적은 하지 않는다.
- 스테이징 영역(Staging Area): 작업내용이 올라가는 임시 저장 영역으로 git에 의해 변경점 추적 관리되는 영역이다.
가지(branch)란?
- 현재 작업상태를 복사하여 브랜치에서 작업을 할 경우 완전한 경우에 병합을 한다. 분기점이라고도 부른다.
푸쉬요청거부란?
- 내가 끌어온 저장소가 최신 버전이 아닌 경우, 원격저장소를 업데이트해버린 경우 내 푸쉬가 거절되는 것을 말한다.
github 작업 명령어 종류
병합(merge)이란?
다른 사람의 업데이트 이력을 내 저장소에도 갱신하는 명령어이다.
병합하지 않은 채로 덮어쓴 경우 다른 개발자의 소스코드가 사라지게 된다.
원격저장소와 로컬저장소가 동일한 파일을 수정하여 병합이 불가능한 경우, 충돌이 발생한 곳을 직접 수정해주어야 한다.
커밋(commit)이란?
변경의 단위라고 할 수 있다. 커밋을 진행하다 변경점을 로컬 저장소로 저장하는 과정이기도 하다.
수정내용을 확인가능하며 커밋메시지나 단위는 개개인마다 다르게 작성 가능하다.
각 커밋에는 영문/숫자로 이루어진 40자리 고유 이름이 붙고 이로 인해 커밋을 구분하고 선택한다. (로컬저장소에 저장된다.)
푸쉬(push)란?
로컬 저장소의 변경 내역을 웹 상의 원격 저장소로 업로드하는 명령어이다. (원격저장소에 저장된다.)
풀(pull)이란?
다른 개발자가 원격 저장소에 올려놓은 변경 내용을 내 로컬 저장소에도 적용가능하도록 업데이트하는 명령어이다.
페치(fetch)란?
원격 저장소의 변경 이력만을 지역 저장소로 가져와 반영하는 명령어이다.
클론(clone)이란?
원격저장소에 있는 소스코드를 로컬저장소로 옮겨오는 작업이다.
클론 이후 작업이 깃에 의해 저장된다. 다른 사람의 원격저장소를 통째로 복제하는 것이며
복제한 저장소를 다른 PC에서 로컬저장소로 사용가능하다. 원격저장소의 전체 내용을 지역 저장소로 복제한다.
포크(fork)란?
지정한 원격 저장소의 내용을 자신의 원격저장소로 복제하는 명령어이다.
출처: https://backlog.com/git-tutorial/kr/intro/intro1_1.html 누구나 쉽게 이해할 수 있는 Git 입문