Git은 왜 필요한가? (feat. git 사용법)

귤양·2021년 2월 15일
0

etc

목록 보기
1/1
post-thumbnail

Git?

git이 왜 필요한지 알기 위해서는 먼저 git이 뭔지 알아야 한다. 하지만 자세한 설명은 정보의 바다인 인터넷에 조금만 찾아보면 워낙 잘 나와있을테니까 생략하고 간단하게만 알아보고자 한다.
git은 분산 버전 관리 시스템을 말하는 것으로 소스코드를 쉽게 관리하기 위해서 생겨났다.

소스코드의 관리가 왜 필요하죠?

위에서 소스 코드를 쉽게 관리하기 위해서 생겨난것이 git이라고 했다. 그렇다면 소스코드의 관리는 왜 필요할까?
웹사이트 및 웹 애플리케이션의(이하 서비스) 규모가 점점 커지고 있고, 이에 따라 수 많은 개발자들이 협업을 통해 서비스를 개발하고 있다.
그런데 git을 사용하지 않고 여러 개발자가 코드를 각자 관리하고 있다고 생각해보자. 실제로 개발된 서비스를 배포하기 위해서는 각자가 가지고 있는 코드들을 취합하는 과정을 거쳐야 하고 이 과정에서 온갖 에러가 날 것이다. 변수 이름이 중복되는 문제부터 시작해서 어떤 문제가 발생하게 될지는 아무도 모른다. 그리고 이 것을 해결하기 위해서는 더 많은 시간이 걸릴 것이다. 그런데 추가적으로 이 코드를 취합하는 와중에도 여러 개발자들은 각자의 개발을 또 진행하고 있을 것이고, 그렇게 진행하다보면 개발은 결국 엉망진창이 될 것이다.
결국 소스코드는 여러 개발자가 함께 관리하고 비교적 실시간으로 관리 되어야 한다는 생각을 하게 된다. 이것을 가능하게 해주는 것이 git이다. git을 사용하면 내가 작성한 일정한 단위의 코드를 add, commit, push를 통해서 다른 개발자들과 실시간(사실 실시간은 아니겠지만)으로 반영하여 공유하고, 다른 개발자들이 작성한 코드도 공유하여 반영할 수 있게 된다. 또한 코드들이 반영되었을 때 문제가 생기면 수정을 하기에도 용이하며, 문제가 없다고 판단하여 배포했지만 결과적으로 문제가 생겼을 경우 이전 버전으로 돌아가는것도 좀 더 쉽게 가능하게 된다.

참고로 많이 사용하는 github은 git을 가르키는 절대적인 명칭이 아니라 git을 이용한 서비스를 제공하는 웹 사이트(혹은 웹 애플리케이션)이다. gitHub 외에도 gitLab, Bitbucket등이 있다.

git 사용법

  1. 프로젝트에 깃을 설치한다. (git init)
  2. 개발을 진행한다. (개발은 의미 있는 단위로 구분하여 진행한다.)
  3. 단위별 개발이 완료되면 작성한 파일을 선택한다. (git add)
  4. 선택한 파일이 어떠한 개발을 진행한 파일인지 설명을 적어준다. (git commit 메시지 작성)
  5. 선택하고 설명까지 작성한 파일은 git repo에 보낸다. (git push)

이후 2 ~ 5을 반복하여 개발을 완료한다.

위에 적어둔 순서가 git 을 사용하는 큰 틀이라고 생각하면 된다. 물론 git을 혼자 사용하게 된다면 위에 작성된 방법만으로도 충분할 것이다. 하지만 만약 다른 개발자들과 협업 과정에서 사용하게 된다면 위의 과정에 추가 되거나 달라지는 몇가지 과정들이 더 있다.

  1. 팀장님 혹은 개발 메인 repo를 fork 한 뒤 fork된 repo를 내 로컬 환경에 clone한다.
  2. 개발을 진행한다. (개발은 의미 있는 단위로 구분하여 진행한다.)
  3. 단위별 개발이 완료되면 작성한 파일을 선택한다. (git add)
  4. 선택한 파일이 어떠한 개발을 진행한 파일인지 설명을 적어준다. (git commit 메시지 작성)
  5. 선택하고 설명까지 작성한 파일은 git repo에 보낸다. (git push : 내가 포크해온 repo로 보내짐)
  6. 내가 fork한 레포에서 pull request를 개발 메인 repo로 보낸다.
  7. 다른 사람들이 작성한 코드가 있다면 해당 코드를 다운 받는다. (git pull)
  8. 다운 받은 코드가 내가 작성한 코드와 충돌(conflict)한다면 충돌을 해결하고 합친다.(merge)

이후 2 ~ 8을 반복하여 개발을 완료한다.

이후의 git 설명은 github를 기준으로 설명합니다.

git 프로젝트를 시작하는 방법

git을 프로젝트에서 사용하는 방법은 2가지가있다. 첫번째는 local 환경에서 폴더를 만들고 git을 설치해서 시작하는 방법과, github에서 repo를 만들고 local에 clone하여 진행하는 방법이다.

1. local에서 프로젝트를 시작하는 방법

local에서 프로젝트 폴더를 만든뒤 해당 폴더에서 진행함

  1. $ git init
    → 이 폴더에서 git을 사용하겠다
  2. git remote add origin (git repo 주소)
    → 프로젝트 폴더와 git repo를 연결함
깃 기본설정! git bash에서

$ git config --global user.name "user name"
$ git config --global user.email "user email addr"
$ git config --global core.editor "vim"
$ git config --global core.pager "cat"

2. github에서 repository 만들어서 시작하는 방법

github에서 repository를 생성한 뒤, 내 작업공간으로 복사해서 작업을 시작한다.

$ git clone https://github.com/ulgoon/TIL-sample.git

"Git"이 연결된 폴더인지 확인하는 방법!!
$ git status
$ ls -a → 명령어로 git 폴더가 있는지 확인할것!

git에서 add, commit, push하기! (feat. pull)

git은 결국 내가 작성한 코드를 공유하기 위해서 코드를 작성한 파일을 선택하고, 설명을 작성한 뒤에 repo에 공유하는 과정이 필요하다. 그리고 다른 개발자와 협업을 한다면 다른 개발자의 코드를 가져와서 내 코드와 합친뒤에 새로운 코드를 작성해야 한다. 이러한 과정을 각 add, commit, push, pull 이라고 한다.

1. add(선택)하기!

  • $ git add 파일명 : 특정 파일만 선택 가능함
  • $ git add . : 변경된 모든 파일 선택하기

2. commit(작업내용 작성)하기!

  • vim 에디터로 넘어가서 commit 메세지 작성하기
    $ git commit

  • git bash에서 직접 커밋 메세지 작성가능 : 뒤쪽의"가 끝나기 전에 엔터를 치면 제목과 내용으로 구분됨

I added README.md with git for the first time.
I think git and github is cool."

commit 메세지 작성 tip

  1. 커밋은 작업단위를 설명할 수 있는 충분한 내용이 있어야 함. (의미가 있는 단위로 구분되어야 한다.)
  2. 커밋 메세지는 가능하면 영문으로 작성하는 것이 좋다. (git repository가 공개되어 있다면 외국인들도 모두 확인할 수 있으므로 영문으로 작성하는 것이 좋다. 물론, 팀 프로젝트의 경우 팀원간의 협의에 따라 한글로 작성해도 문제되지 않는다.)

commit 메세지 prefix

  • feat: feature (기능 개발, 추가)
  • docs : documentions (문서)
  • refact : refactoring (코드 리팩토링)
  • conf : configuration (환경설정)
  • bug-fix : bug-fix (기존기능에 버그)
  • solve : merge conflict solved
  • release : releases
  • style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
  • test : 테스트 코드, 리팩토링 테스트 코드 추가
  • chore : 빌드 업무 수정, 패키지 매니저 수정

3. push(repository에 올리기) 하기!

  • git 을 origin에 master로 push 하기!!
    $ git push origin master

4. git에서 pull(당겨오기) 하기!

  • 내가 현재 작업하고 있는 폴더에서 진행해야 함.
    $ git pull origin master

git 명령어

  • $ git status : 현재 작업의 상태 확인
  • $ git remote add origin 주소 : 깃주소를 등록
  • $ git remote
  • $ git remote get-url origin
  • $ git log : 작업한 git commit 내용 확인
  • $ git pull origin 브랜치명 --allow-unrelated-histories : 머지가 다 되었는데, 자꾸 뭔가 더 머지해야 한다고 할때 머지를 무시 (강제로 머지를 시키는 것이기 때문에 분명히 문제가 없다고 판단될때만 사용해야 한다.)
  • $ git reset filename.txt : git add의 반대 개념으로 스테이징된 파일을 스테이징이 되지 않은 상태로 되돌린다.
  • $ git branch [-r/-a] : -r 옵션은 리모트로부터 가져온 브랜치를 -a 옵션은 로컬과 리모트 브랜치 모두를 보여줌
  • $ git branch 브랜치네임 : '브랜치네임'으로 새 브랜치를 만들고 현재의 커밋을 시작점으로 함
  • $ git checkout 브랜치네임 : 브랜치를 변경하기
  • git reset HEAD^ : PUSH 하기 전 commit 취소

참고자료
https://git-scm.com/docs
https://git-scm.com/docs/git#_git_commands

Gitignore

Git에서 트래킹하지 않아도 되는 파일 (비밀번호 파일, 개인정보 파일, 블랙리스트 파일 등)을 선택 작성할 수 있는 파일!

profile
디자인하는 Frontend Developer.

0개의 댓글