2 분 소요

이 포스트는 나의 사랑스러운 조카 김백건과의 1:1 멘토링의 출발로 가볍게 Git의 중요성과 사용법을 간략히 알아봅니다.

1. Git은 왜 필요한가?

  • 프로젝트를 진행하는데 있어서 조직원들과의 협업을 하는데 필수적인 솔루션.
  • 프로젝트의 소스 관리 및 개발 히스토리를 제공.

2. Repository(저장소) 생성

  • 나만의 저장소를 생성해서 프로젝트 관리를 할 수 있음.
  • 깃허브는 open source로 다른 사용자들도 내 저장소에 접근할 수 있다.
  • 저장소 생성시 ReadMe.md 파일을 생성해서 프로젝트의 히스토리를 기록한다.
    (ReadMe.md는 MarkDown 규격으로 간단한 Tag들을 통해서 문서 작성이 가능하다.)

  • .gitignore 파일 관리
    빌드를 통해 생성된 파일 및 협업하고 있는 각 개발자들의 환경에 따라서 생성된 파일은 공유될 필요가 없으며, 그러한 파일 및 폴더 목록을 관리하여 Commit, Push 리스트에서 배제하는 용도로 사용된다.
    참고로, 파일명 앞에 붙은 .은 보통 숨김파일을 의미하다.
    (note: 탐색기에서 shift+우클릭하면 더 많은 보기들이 나옴)

3. 브랜치

  • 보통 레파지토리를 생성하게 되면 main 브랜치로 생성하게된다.
  • 브랜치는 현재 함께 프로젝트를 진행하는 구성원이라면 각자의 역할에 맞는 여러 개의 브랜치를 생성할 수 있다.
  • 일반적으로 main(master) 브랜치는 상용을 목적으로 사용하며, 상용전/후 개발 진행시에는 별도의 브랜치를 생성해서 관리한다.

4. Git 설정

  • clone을 통해 원격저장소의 생성한 저장소를 가져온다.
    git clone 원격저장소주소 로컬폴더명
    
  • checkout을 통해 원격저장소에 생성된 다수의 브랜치중의 특정 브랜치를 변경/전환한다.
    git checkout 브랜치명
    

    :warning: WARNING
    checkout을 통해 브랜치를 변경/전환할 경우 꼭 현재 브랜치의 작업 내용을 하기 절차를 통해서 원격 저장소에 반영 후 사용한다.

5. Git 사용법

  • git pull 이후 충돌이 발생하면 상황에 따라서 별도의 대처가 필요
    $ cd projects // 프로젝트 생성 디렉토리로 이동(Optional)
    $ git status // 현 (원격) 저장소 및 (로컬) 저장소(Stage) 상태 확인
    $ git add . (or git add filename) // 수정 또는 추가 파일 등록
    $ git commit -m 'description' // 수정 또는 추가 파일 Stage에 등록
    $ git status // 현 (원격) 저장소 및 로컬(Stage) 상태 확인
    $ git pull origin main // (원격) 저장소의 변경 사항 받아오기
    $ git push origin main // (로컬) 저장소의 변경 사항 서버에 적용
    $ git status // 현 (원격) 저장소 및 로컬(Stage) 상태 확인
    

6. 기타

  • git commit만 하면 _____ 창이 열리는데 Esc키를 눌러 :wq를 이용해 수정할 수도 있고 :q를 통해 나올 수 있다.
  • git commit -m “설명문”을 통해 빠르게 commit 하는 연습을 하자.
  • hello.txt를 pull했는데 충돌이 일어낫다 -> 메모장을 킨 후 충돌이 일어난 부분을 확인 후 수정하여 다시 한번 더 merge를 시킨 후 충돌이 해결된이후에 push를 해주자.
  • 파일 수정 - add - commit - pull - push 순서는 반드시 지켜주자!
  • git command에 익숙해지기 전까지는 절대로 SourceTree와 같은 git툴을 사용하지 말고 terminal을 통한 직접 명령어로 숙지!!

“어떤 바보라도 컴퓨터가 이해할 수 있는 코드를 작성할 수 있습니다. 훌륭한 프로그래머는 인간이 이해할 수 있는 코드를 작성합니다.” - Martin Fowler
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”