git 보고서

git은 리누스 토르발즈가 개발한 VCS, 버전관리 시스템이다.

위의 문장을 읽은 당신의 기분은 이럴것이다. "음... 뭔가 좋은거구나. 프로젝트의 버전을 관리한다니! 개발자들한테 좋겠네!"
그렇다. 와닿지 않을것이다. 그렇다면 이런 예시는 어떨까?

그렇다. 버전 관리는 프로젝트를 하는 모두에게 있어 재앙이다! 이런 이슈는 당신만 겪는것이 아니고, 프로젝트를 하는 모든 사람들이 겪는 이슈이다.

그래서 버전관리 소프트웨어가 필요하고, git은 그러한 버전 관리 소프트웨어 중 하나이다.
"이전 버전으로 되돌리거나, 그 되돌린 작업을 취소 할 수 있도록 도와주는 것". 이게 버전 관리 소프트웨어가 하는 역할이다.

그렇다면 지금부터 git 을 사용해보자!
다운로드는 공식 홈페이지인 이곳에서 받을 수 있다.

일단, git을 사용하기 위해 여기서 git 을 사용한다고 정의를 해주자. 이것은 커맨드라인에서 git init 이라는 명령어를 사용함으로써 할 수 있다. git init 을 실행하면 현재 디렉토리에 git 프로젝트 하나가 생성된다. 즉 디렉토리 하나가 하나의 프로젝트 단위가 된다고 생각하면 편하다.



이렇게 만들 수 있다.

git을 기본적으로 사용하기 위해서는 알아야 할 몇가지 개념들이 있다.
Staging Area, Commit, Remote Repository, Branch 가 그것들이다.

Staging Area


Staging Area란 작업한 내용을 기록하기에 앞서 임시로 저장해두는 공간이라고 생각하면 된다. 예를들어서, README.md 라는 파일을 생성했다고 하자.
그리고 이 버전을 기록하려면, 일단 스테이지에 넣어두어야 한다. git add <넣을 파일> 을 하면 된다.
그리고 현재 스테이지에 올려진 파일과, 수정되었지만 스테이지에 올려지지 않은 파일은 git status 명령어를 통해 확인 할 수 있다.

다음은 README.md 를 스테이지에 넣고, test라는 파일을 생성한 뒤에 git status 를 실행한 결과이다.
 이런식으로 잘 되는것이 보인다. 그렇다면 이제 이 버전을 기록하기 위해서는 무엇이 필요할까?

Commit

Staging Area안의 내용을 기록하는것이 바로 commit 이다. commit은 Staging Area 안에 있는 내용을 기록 할 수 있게 해준다.
아무런 옵션 없이 그냥 git commit 명령어를 실행시키면 이런 화면이 뜨는데,
나의 경우에는 기본 에디터로 vim(nvim)을 설정해두어서 git이 뜨는데, 아마 기본값은 nano 에디터일것이니 내 것과 모습이 다르다고 실망하지 않아도 된다.

아무튼, git commit 명령어를 실행시키면 뜬금없이 COMMIT_EDITMSG를 수정하라는 창이 뜨는데, commit 을 할때에는 수정사항을 기록 해야한다.

저기서 수정사항을 문장으로 입력하면, 해당 내용으로 기록이 된다.

이 부분에 대해서는 뒤에서 더 자세히 다루도록 하겠다.

아무튼, commit 을 할때에도 여러가지 옵션을 지정하면서 할 수 있는데 이는 다음과 같다. 자주 쓰는것 두개만 적어두겠다.

--all, -a: 수정된 사항을 모두 스테이지에 올리고, commit 한다.
--message, -m: 커밋 메시지를 바로 입력한다.

Remote Repository

그래서 이러한 내용들을 담고있는 git 프로젝트를 호스팅 해주는 서비스들이 여럿 있는데, 그중 하나가 익히들었을 github이다.

github의 계정을 만들었다는 가정하에, 다음과 같은 방법으로 업로드 할 곳을 지정해 줄 수 있다. 그게 바로 remote repository 이다.

이런식으로 생성이 가능하고, 원격 저장소를 생성했다면 이제 우리의 git 프로젝트에 remote repository를 지정해 주어야한다. 다음의 명령을 입력하는것으로 가능하다.

git remote add origin git@호스팅을 해줄 사이트의 도메인네임:계정명/프로젝트이름


자, 이제 git push -u origin master 라는 명령어를 통하여 remote repository로 당신의 프로젝트를 업로드 할 수 있다.
만약 다른 컴퓨터에서 작업을 해서 remote repository에만 수정사항이 있다면, 다음과 같은 명령어로 당신의 로컬 컴퓨터의 프로젝트를 업데이트 할 수 있다.

git pull

Branch

여럿이서 프로젝트를 하게되면 프로그래머들은 소스코드를 공유하게 된다.
그런데 아까 버전관리 시스템을 사용하는법을 보았다면 알겠지만, 버전이 관리되는 방식은 스택이다.
그런 이유로 여러개의 가지로 분류하여 개발자 각자가 맡은 부분을 분리하여야 하지 않겠는가?
그게 Branch이다.

사실 언급을 안했지만, 기본적으로는 master branch에 모든 내용이 커밋된다.

아무튼, 새로운 Branch 하나를 더 만들어보자.
Branch 생성은 git branch <브랜치 이름> 으로 가능하고, 브랜치 목록은 git branch 명령어를 통하여 확인 할 수 있다.
잘 생성된것이 보인다! 
원하는 브랜치로 바꿀때에는 git checkout <브랜치 이름> 으로 가능하고, 삭제는 git branch -d <브랜치 이름> 으로 가능하다.

작업 후 내용을 master 브랜치와 병합(merge) 하는것은 git merge <브랜치 이름> 으로 가능하다. 다만 이 경우에 master 의 수정사항과 병합하려는 브랜치의 충돌사항이 없어야한다.

이상 즐거운 git 사용으로 개발을 편히 해보자!

Comments

Popular Posts