본문 바로가기
개발의 정석/툴, 기타

[#git] git, github를 쓰는 이유와 기본 명령어에 대해 알아보자

by 발자개발 2020. 3. 26.

 

 

1. git이란?

하나의 프로젝트를 진행할 때, 보통 여러명의 개발자가 동시에 작업을 진행한다. 모두 작업을 끝마치고 서로의 소스코드를 붙이려고 할 때 어떻게 취합하는게 좋을까? USB? 메일로? 취합만 하는데도 머리가 지끈지끈 아파온다. (예전엔 정말 이렇게 했다.. 끔찍)

 

그래서 스마트하게 소스를 관리해보자! 라고해서 나온 개념이 형상 관리(Configuration Management)이다. 대표적으로 svn, git이 있는데, 대세는 역시 갓 git

 

git을 간단히 설명해보면 작업의 base가 되는 master branch에서 여러명의 개발자가 각각 새로운 branch를 따면, 각각의 새로운 작업 영역이 생기게 된다. 여기서 branch는 하나의 작업 영역, 하나의 소스코드 버전이라고 이해하면 된다.

 

그리고 작업이 마무리되어 하나하나 master branch로 합치기 위해 pull request를 하는데, "나 작업 다 끝났으니 내 소스코드 리뷰해보고 문제없으면 master branch로 합칠게요" 라는 뜻이다. 이렇게 하나하나 master branch로 합쳐지면 수명~수십명의 개발자가 각각 개발한 소스코드가 아주 스마트하게 master branch로 모아지게 된다.

 

pull request를 날릴 때, master branch vs 새로운 branch의 소스코드 차이(뭐가 추가되고 뭐가 빠졌는지)를 너무나 잘 보여줘 굳이 모든 소스코드를 볼 필요 없이 바뀐 부분만 보고 빠르게 리뷰를 할 수 있다.

 

 

2. github란?

github(git + hub) 는 git으로 관리할 소스코드를 올릴 원격 저장소를 뜻한다. 내 컴퓨터에서 소스코드를 github의 내 repository 저장소에 push해 올리고, 다른 컴퓨터에서 github의 내 repository에 올라가있는 소스코드를 내려받아 작업을 시작할 수 있다.

 

 

3. git 다운로드 받고 github 가입하기

아래 링크에서 운영체제 별 git을 다운로드 받을 수 있다.

https://git-scm.com/downloads

 

Git - Downloads

Downloads Mac OS X Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific

git-scm.com

 

아래 링크에 github에서 이메일로 계정을 만들 수 있다. 가입은 이메일, 비밀번호만 적으면 끝, repository를 만드는건 이름만 적으면 끝이니 이상의 불필요한 설명은 생략한다. 아래 링크에서 계정을 하나 만들고 개인 repository도 하나 만들어보자 (모두 무료다)

https://github.com/

 

Build software better, together

GitHub is where people build software. More than 40 million people use GitHub to discover, fork, and contribute to over 100 million projects.

github.com

 

4. git 기본 명령어 알아보기

이제 git 기본 명령어를 알아보려한다. 이 정도 기본 명령어만 알아도 기본적으로 github에 소스코드를 올리고 변경하고 로컬 소스코드와 싱크를 맞추는 필수적인 작업들을 할 수 있다. 이외에 명령어도 많지만 옵션일 뿐이고, 이 기본 명령어가 전체 사용하는 비율의 90%를 차지하니 귀찮거나 시간이 모자라면 이것만 봐도 좋다.

 

1. github에 repository를 만들고 여기다가 내 새로운 소스코드를 관리한다.

사용할 커맨드 : git clone

 

3.에서 github에 가입하고 repository를 하나 만들었으면, repository에 들어가 Clone or download 버튼을 누르자. 그럼 어떤 주소가 뜨는데 이 주소가 내가 만든 repository의 주소이다.

github repository 저장소

 

그리고 터미널을 켜서 git clone <주소> -b <브랜치명> <이름> 을 실행하면 <이름> 디렉토리가 생긴다. 이게 작업 영역이다.


git clone https://github.com/korband78/kutility.git -b master first_repo

 

 

2. 새로만든 repository에 변경된 소스코드를 업로드하기

사용할 커맨드 : git add --all, git commit -m "message", git push origin master

 

생성된 작업 영역에서 소스코드를 추가해보자. 이제 변경된 소스코드를 다시 repository에 반영하려면 아래와 같은 과정을 거쳐야한다.

 

 

 

2-1. git에게 소스코드 변경한 내역들을 알려주기


git add --all
# 또는
git add .

 

이 명령어를 수행하면 git이 소스코드내 변경된 내역들을 알게된다. 해주지 않으면 git은 소스코드가 변경됐는지 알 수가 없다.

 

 

2-2. 변경된 작업 내역 제출하기


git commit -m "쓰고 싶은 메세지"

2-1.에서 변경한 내역들을 제출하게 된다. 이때 제출한 내역은 로컬에만 반영되어 있는 상태이다. 이를 서버 repository에 반영하려면 2-3.의 git push를 해줘야한다.

 

2-1. 2-1.는 보통 기능 단위로 수행한다. 예를 들면 버튼을 누르면 주의 팝업창이 뜨는 기능을 추가한다고하면, 다른 기능은 나중에 하고, 일단 이 기능을 추가하는 것만 commit하는 것이다. 이렇게 쪼개야 추후에 문제가 생겼을 때 추적하기 쉽다.

 

 

2-3. 변경된 작업내역 github repository에 업로드하기


git push origin master

github repository에도 변경된 소스코드가 업데이트 된다. 뭔가 꼬여서 강제로 업로드하고 싶을 땐 git push -f origin master 처럼 -f 옵션을 붙여준다.

 

 

3. github repository의 작업 내역들을 내 로컬PC로 동기화 시키고 싶을 땐

작업 내역이 아에 없으면 1. 과 동일하게 git clone 을 해주고


git clone https://github.com/korband78/kutility.git -b master first_repo

 

작업 내역이 있으면 단순히


git pull

만 해주면 repository => 로컬PC로 작업 내역이 동기화 된다.

 

 

이 정도 명령어가 git 사용의 90%이상 차지하므로 이것만이라도 알아두자 :)

 

 

 

댓글