처음 만나는 git

Index

git이란?

git을 적용하기 위해 필요한 스킬과 도구

  • git

    • git을 사용하기 위해 당연히 git이 필요합니다.
    • Ubuntu와 MacOS는 git이 이미 설치되어 있습니다. 만약 재설치가 필요한 경우, $ apt-get install git(Ubuntu), $ brew install git(MacOS)로 git을 설치해주세요.
    • windows는 git bash 사용을 위해 https://gitforwindows.org/ 에서 도구를 다운로드 한 뒤, 설치를 진행합니다.
  • Terminal

    • CLI 에서 git을 사용하기 위해 터미널이 필요합니다.
    • windows는 여기서 powershell 또는 cmd로도 가능하지만 git과 함께 제공되는 git bash에서 git 관련 작업을 진행합니다. git for windows 다운받기
  • Text Editor

    • 작업을 위한 텍스트 편집기가 필요합니다.
    • 여기서는 vim으로 작업과 커밋메시지를 작성합니다.
  • github 계정

git을 시작하기 전 해야할 몇가지 작업

git을 본격적으로 사용하기 전 github username과 email, 사용할 Editor, pager를 설정해야 합니다. 어떤 위치에서 하셔도 상관없습니다.

1
2
3
4
$ git config --global user.name "당신의유저네임"
$ git config --global user.email "당신의메일주소"
$ git config --global core.editor "vim"
$ git config --global core.pager "cat"

config 작업이 끝났다면, $ git config --list 명령으로 메일주소와 유저네임에 오탈자가 있는지 확인합니다.

git 시작하기

프로젝트를 시작하는 방법은 크게 두가지가 존재합니다.

1. git init

작업공간에서 시작하여 github으로 소스코드를 순차적으로 내보냅니다.

asciinema

asciicast

  1. 프로젝트 폴더를 만듭니다.
1
2
$ mkdir first-git-repo
$ cd first-git-repo
  1. git init 명령으로 local repository로서 역할을 시작합니다.

$ git init

  1. github에서 새로운 비어있는 remote repository를 생성하고, 복사한 주소를 local repository에 등록합니다.
  • 여기서 remote repository 이름은 컴퓨터에서 생성한 새 폴더 first-git-repo와 이름을 맞춤으로써 나중에 헷갈리지 않도록 합니다.

https://github.com/당신의유저네임/first-git-repo.git

  • 위에서 복사한 주소를 활용해 현재 작업공간에서 remote repository 주소를 추가합니다.

$ git remote add origin 복사한주소

여기서 origin은 복사한주소를 부르기 위한 이름이며, 다른 이름을 쓰셔도 괜찮습니다.

예)

1
$ git remote add cat 복사한주소
  • 잘 추가되었는지 확인합니다.

$ git remote get-url origin

  1. 새 파일을 만들고 작업을 수행합니다.
1
2
$ touch README.md
$ vi README.md

i를 눌러 insert mode를 활성화 한 뒤, 텍스트 편집을 수행하고 esc키를 눌러 normal mode로 빠져나와 :wq 를 입력하여 저장한 뒤 vim을 종료합니다.

  1. 작업이 끝났다면 $ git status 명령으로 현재 프로젝트의 상태를 확인합니다.

untracked files: README.md 가 보인다면 다음 작업을 할 준비가 되었습니다.

  1. workspace에 추가된 새로운 파일을 index로 staging합니다.

$ git add README.md

  1. 추가된 README.md 에 대한 설명을 commit합니다.

$ git commit

core.editor=vim 으로 설정했기 때문에 다른 에디터가 아닌 vim 에디터로 commit 메시지를 작성할 수 있습니다.

i를 눌러 insert mode를 활성화 한 뒤, commit message를 작성하고 esc키를 눌러 normal mode로 빠져나와 :wq 를 입력하여 저장한 뒤 vim을 종료합니다.

모든 작업이 끝났다면 $ git status를 입력해 commit 할 내역이 존재하는지 확인합니다.

만약 vim이 아직 어색하다면, $ git commit -m "커밋메시지"를 입력하면 커맨드라인에서 바로 Commit message를 입력할 수 있습니다.

tip: commit message 깔끔하게 입력하기

  • open source 개발의 경우, source code 뿐 아니라 Commit message도 공개되기 때문에 모든 사용자가 읽을 수 있는 언어를 선택합니다^^
  • commit message의 제목에 말머리를 달아 Commit의 카테고리를 바로 확인할 수 있도록 합니다.
    • feat:, docs:, test:, refactor: 정도의 말머리만 잘 붙여도 깔끔한 관리가 가능합니다.
    • Reference: Conventional commits
  • commit message의 제목은 구(두개 이상의 단어가 모인 하나의 품사)의 형태를 띄게 합니다.
  • commit message는 제목과 내용이 존재합니다.
  • 내용은 optional body에 Enter로 구분하여 작성하며, 문장형으로 작성합니다.
1
2
3
4
5
<말머리>[optional scope]: <제목>

[optional body]

[optional footer]
  1. commit 이 끝났다면 remote repository로 push 합니다.

첫 commit이라면, -u(–set-upstream) flag를 붙여 push 하여 현재 작업중인 branch가 업로드할 branch의 변동사항을 추적하도록 설정합니다.
$ git push -u origin master

이후에는 -u 옵션 없이 바로 push 합니다.
$ git push origin master

  1. 4~8의 작업을 반복 수행합니다.

2. git clone

github에서 remote repository를 먼저 생성한 뒤, 작업공간으로 끌어와 작업을 시작합니다.

asciinema

asciicast

  1. github에서 remote repository를 생성하되, LICENSE, README.md, .gitignore 등의 파일과 함께 생성합니다. 그리고 Clone or Download 버튼을 눌러 해당 repository의 주소를 복사합니다.

  2. Terminal에서 $ git clone 복사한remoteRepo주소를 입력하여 작업공간에 local repository를 생성합니다.

  3. 새 파일을 만들고 작업을 수행합니다.

1
2
$ touch README.md
$ vi README.md

i를 눌러 insert mode를 활성화 한 뒤, 텍스트 편집을 수행하고 esc키를 눌러 normal mode로 빠져나와 :wq 를 입력하여 저장한 뒤 vim을 종료합니다.

  1. 작업이 끝났다면 $ git status 명령으로 현재 프로젝트의 상태를 확인합니다.

untracked files: README.md 가 보인다면 다음 작업을 할 준비가 되었습니다.

  1. workspace에 추가된 새로운 파일을 index로 staging합니다.

$ git add README.md

  1. 추가된 README.md 에 대한 설명을 commit합니다.

$ git commit

  1. commit 이 끝났다면 remote repository로 push 합니다.

remote repository에서 먼저 끌어와 사용하는 구조이기 때문에 remote repository의 master 브랜치와 local repository의 master 브랜치는 추적하도록 세팅되어 있습니다.
따라서, 위의 -u flag를 붙이지 않아도 됩니다.

$ git push origin master

  1. 3~7의 작업을 반복 수행합니다.

Practice

  • TIL repo를 생성한 뒤 clone 명령어를 사용해 작업공간으로 복사하여 오늘 배운 것을 git/만든날짜-git-start.md 에 정리하여 업로드 해보세요.
1
2
3
4
5
6
/TIL
/git
/만든날짜-git-start.md
README.md
LICENSE
.gitignore