Git

git 이해하고 쉽게 사용하기

shoney9254 2022. 3. 19. 17:37
반응형

Git 사용하는 이유?

 - 공유

   여러 사람들이 함께 작업할 수 있다.

   브랜치 모델을 사용해서 동시작업(?)의 효율을 높일 수 있다.

 - 보관

   안전하게 코드를 백업할 수 있습니다. 

   다른 형상관리와 다르게 바로 원격 저장소에 저장되지 않고, 로컬 저장소에 저장되고 푸쉬되는 차이점이 있다.

 - 대세

   많은 기업에서 형상관리를 Git으로 사용한다. (내가 지금 하고 있는 프로젝트에서도 사용중)


계정 연결

 git config --global user.name "Shoney"

 git config --global user.email "깃 계정 메일 입력"

alias

- git은 명령어를 완벽하게 입력하지 않으면 알아듣지 못한다. 

- git config를 이용해서 각 명령의 Alias을 쉽게 만들 수 있다. 아래는 만드는 예이다. 

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status 
git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"

- 아래 설명부터는 alias 로 적용된 것으로 설명합니다. 

- alias 참조 링크 : https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-Git-Alias


Git 관련 기본 용어 설명

 

add : 파일들을 git이 관리하도록 설정하겠다.

 

commit : 이 파일을 git에 저장하겠다.

 

Untracked : git과 아무 상관이 없는 상태 (add를 해줘야 git이 관리할 수 있음)

 

Unmodified : 코드 저장이 완료되면(=staged 상태에서 commit을 하면) Unmodified가 된다.

 

Modified : Git으로 관리되고 있는 소스에 변경이 일어난 상태

 

Staged : 소스코드를 Commit 할 수 있는 상태

 


Status(st)

 - 현재 git 상태를 보여주는 명령어

 - Untracked files : untracked 상태인 파일 리스트 

 - Changes to be committed : Staged 상태인 파일들

 - nothing to commit, woriking tree clean : Unmodified 상태인 파일들

 

Log(lg)

 - 커밋 단위로 히스토리를 조회하는 명령어

 - 위에서부터가 최신입니다. 

 - 충돌 없이 merge를 잘 하려면, Log를 잘 보도록 하자 

 

Add

 - 파일을 Staged 상태로 변경하는 명령어 (staged 이후에 commit을 진행할 수 있음)

 - untracked, modified 파일만 Add 명령어 사용 가능


Commit(ci)

 - 파일을 unmodified 상태로 변경되면서 git에 파일을 저장하게 됨

 - 실무에서는 한 작업(feature) 단위로 한 커밋을 권장한다. 

 - "-m" : 커밋에 메세지를 넣음

 - "-a" : add를 같이 진행 

 - "-am" : -a 와 -m을 같이 진행함

 - "--amend" : 마지막 커밋을 수정, Stage 상태의 파일들과 같이 커밋 진행


Branch(br)

 - 형상관리 툴 중에서 git 사용의 이유를 가장 잘 나타내는 특징이 아닐까 싶다. 

 - 브랜치가 아닌 브런치라고 읽는 분들이 있는데 브런치는 아침겸 점심이라면 브랜치는 가지를 말하는 것이라서 브랜치라고 읽는 걸 권장(?) 한다. (개인적인 의견)

 - HEAD라고 불리는 특수한 포인터(?)는 지금 작업하는 로컬 브랜치를 가리킨다. 

 (참조 사이트 링크 : https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80)

 

👇🏻 브랜치 관련 간단 명령어

 - 브랜치 확인 

git br

 

 - 브랜치 생성 

git br 브랜치명

 - 브랜치 삭제 

git br -D 브랜치명

- 브팬치 이동 

git checkout 브랜치명

 이렇게 하면 HEAD는 해당 브랜치를 가리키게 된다.

 

👇🏻브랜치 관련 용어

- 아래 용어들을 명확하게 알아야 여러 사람들과 작업을 진행하는데 큰 어려움 없이 진행 가능하다.

 

master

 - git init 하면 생기는 태초의 브랜치

 - 배포 가능한 master 브랜치 

 - 보통 태그를 따서 태그로 배포함

 

develop 

 - 보통 작업할 때 기준이 되는 브랜치 

 - 개발 서버에도 평소에는 develop 기준으로 배포하며 테스트 함

 - 생성 위치 : master

 

hotfix

 - 서비스에 문제가 생기거나 갑자기 무언가 고쳐서 배포해야 할 때 사용

 - 생성 위치 : master

 - merge : master, develop

 

feature

 - 실제로 뭔가 기능을 만드는 브랜치 

 - 생성 위치 : develop

 - merge : develop

 

release

 - 새로운 기능들을 추가하여 배포하기 위한 브랜치 

 - 생성 위치 : develop

 - merge : master & develop

 

HEAD

 - 지금 작업하는 로컬 브랜치를 가리키는 포인터 

 - 현재 브랜치 마지막 커밋의 스냅샷 

 - 브랜치를 변경하면 해당 브랜치의 마지막을 가리키고 있음

 - HEAD를 움직이면서 여러 버전으 코드들을 볼 수 있음

 

checkout(co)

 - 다음 브랜치로 이동 

 - "-b" : 옵션으로 브랜치 생성 + 브랜치로 check out


Push

 - 로컬 브랜치의 정보를 원격 저장소로 업로드 

 - Clone 한 리모트 저장소에 쓰기 권한이 있어야 함 

 - 같은 브랜치로 여러명이 받아서 누군가 Push를 했다면 나는 Push안됨

 - 다른 사람이 작업한 것을 가져와서 합친 후에 Push 할 수 있음

 

Pull 

 - 원격 저장소에 있는 소스코드를 가져오면서 로컬에서 작업하는 코드와 Merge

 

Fetch 

 - 원격 저장소에 있는 소스코드를 가져옴 (자동 Merge 하지 않음)

반응형