프로그래밍에 있어, 코드를 관리하기에 아주 좋은 도구가 있는데, 그게 바로 Git이다.

이번에는 Git의 사용법에 대해서 간단히 알아보겠다.

Git은 왜 쓰는건가?

  • git을 이용하면, 내가 작업중인 프로젝트의 변화과정을 그때 그때 저장해놓을 수 있다.

  • 다시 말해, 돌이키기 어려운 실수를 했거나 어딘가 잘못됐을 때 이전의 상태로 다시 되돌릴 수 있는 것이다.

  • 그리고 git을 사용하면, 기존의 파일에는 영향을 주지 않고 새로운 작업을 할 수 있게 해준다.

  • 결과적으로, git을 사용하면 프로젝트 파일들을 매번 백업할 필요가 없어지고, 코드 관리가 편해진다. 즉, 버전 관리가 손쉬워진다.

준비물

Git 사용법

git을 어떻게 사용하는 지, 어떤 기능이 있는 지 간단하게 알아보겠다.

먼저, git 사용의 전반적은 흐름은 다음과 같다.

이번에는 local repository에서 git을 사용하는 방법에 대해 알아보도록 하겠다.

git의 가장 기본적인 기능 살펴보기

  1. local repository 만들기

    • git에는 두가지 저장소(repository)가 있다. 하나는 local repository, 하나는 remote repository다.

    • 만드는 방법은 간단하다. 먼저, 컴퓨터에서 원하는 위치에 폴더 하나를 만든다.

    • 다음으로, 터미널에서 만들어놓은 폴더로 가서 git init을 친다.

    • 그럼 이제 해당 폴더는 git의 관리하에 들어가게 된다.

  2. git 기본 설정해주기

    • 역시 간단하다. 터미널에서 다음 명령어를 입력해준다.

        git config --global user.name "[내 이름]"
        git config --global user.email "[내 메일주소]"
      
  3. git의 현재 상태 알아보기

    • 꼭 필요한 사항은 아니지만, 명령어도 익힐 겸 해보자.

      git status

    • 이 명령어로 현재 git에 등록될 수 있는 것, 등록된 것 등에 대한 정보를 확인할 수 있다.

  4. 모든 변경사항을 staging area에 등록하기

    • 모든 변경사항을 staging area에 등록하고 싶다면, 다음 명령어를 입력하면 된다.

      git add -A

  5. local repository에 변경사항들을 등록하기

    • 앞서 git add를 했다면, 다음 명령어를 입력한다.

      git commit -m '[이번 커밋에 대한 설명]'

  6. 커밋 내역 확인하기

    • 다음 명령어를 치면, 이때까지 커밋한 내역을 확인할 수 있다.

      git log

    • 이 명령어는 vi editor을 실행하기 때문에 빠져나오려면 :q를 눌러주면 된다.

  7. 이전의 커밋으로 돌아가기

    • 이전 커밋으로 돌아가는 방법은 돌아갈 과거 이후의 커밋은 삭제해버리는, 완전히 돌아가는 방법과 이후의 커밋을 남겨두는, 복원할 여지를 남겨두고 돌아가는 방법으로 두가지가 있다.

    • 먼저 완전히 돌아가는 방법은, git log로 확인한 커밋 내역 중, 원하는 커밋의 번호 앞 6번째까지 복사한 후, 다음 코드를 입력한다.

      git reset [복사한 번호] --hard

    • 명령어를 입력하고 나면 이제 해당 시점으로 오게 되었고, 해당 커밋 이후 시점으로는 돌아갈 수 없다.

    • 복원할 여지를 남겨두고 돌아가는 방법은, git log를 통해 돌아갈 시점이 아닌, 취소할 시점을 찾는다. 돌아가고자 하는 시점 바로 다음 커밋이라고 볼 수 있다. 그리고 다음 명령어를 입력한다.

      git revert [취소할 커밋의 번호 앞 6자리]

    • git revert로 과거로 돌아갔다면, git reset을 이용해 다시 현재로 돌아오는 것도 가능하다.

branch 이용해보기

branch를 이용하면 작업중이던 폴더에는 영향을 주지 않고 파일을 추가, 삭제, 수정할 수 있게 된다.
기존 코드들을 건드리지 않고 작업할 수 있기 때문에 마음껏 수정을 해보고 정상적으로 작동한다면 그때 변경사항을 master에 적용시켜주면 되는 것이다.

  1. branch 만들기

    • 다음 코드를 입력해준다. 이를 통해 파일을 복사, 붙여넣기한 것과 같은 효과를 만드는 것이다.

      git branch [원하는 branch 이름]

  2. branch 확인하기

    • 다음 명령어를 입력하면, 현재 어떤 branch가 존재하는 지 볼 수 있다.

      git branch

  3. 다른 branch로 넘어가기

    • 다음 명령어로 다른 branch로 넘어가서 작업을 할 수 있다.

      git checkout [넘어가고 싶은 branch 이름]

    • 다른 branch로 넘어간 이후에는 작업을 해도 해당 branch에서만 적용된다. 겁먹을 필요없다. 다시 checkout해서 원래 branch로 넘어가면 모든 상태가 그대로 남아있다.

  4. branch에서 또 다른 branch를 만들기

    • 간단하다. branch에 checkout된 상태로 git branch [원하는 branch 이름]을 다시 해주면 된다.

    • branch안의 branch에서 master로 merge하게 되는 경우, 이전 branch의 변경사항도 다 적용되서 merge된다.

  5. branch에서 변경된 사항을 master로 들고오기

    • 다시 master branch로 돌아온다.

      git checkout master

    • 다음 명령어로 branch의 변경사항을 가져온다.

      git merge [가져올 branch 이름]

    • 윈도우에서는 보통 바로 merge되지만, Mac에서는 vi editor이 나와서 커밋 메세지를 작성하게 한다. :wq로 저장하고 나오면 된다.

  6. git의 변화 과정을 시각화하여 보기

    • branch가 많아지고 merge가 잦아지면 어디서 어떻게 변화가 일어났는지 확인하는게 복잡해진다.

    • 그럴땐 다음 명령어로 시각화된 커밋 정보를 볼 수 있다.

      git log --graph --all --decorate

  7. merge과정에서 충돌이 일어난다면?

    • 충돌이 일어난 부분에서 필요한 부분만 남기고 지워준 후 다시 add, commit 해준다.

    • 최대한 충돌을 피하기 위해 다른 branch에서는 같은 파일을 수정하지 않는 것이 좋다.

  8. 다 쓴 branch를 삭제하기

    • 다음 코드로 간단하게 branch를 삭제할 수 있다.

    • git branch -D [삭제하고자 하는 branch 이름]


다음에는 github을 이용해서 remote repository를 사용하는 방법까지 알아보도록 하겠다.

참고