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라고 불리는 특수한 포인터(?)는 지금 작업하는 로컬 브랜치를 가리킨다.
👇🏻 브랜치 관련 간단 명령어
- 브랜치 확인
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 하지 않음)
'Git' 카테고리의 다른 글
[SourceTree] window에서 소스트리 실행 안될 때 (0) | 2023.07.02 |
---|---|
git log 종료 단축키 (0) | 2022.03.19 |
git bash 복사, 붙여넣기 단축키 (0) | 2022.03.18 |
Github 초보자도쉽게 따라하는 Git 사용 방법 (0) | 2021.08.08 |
Git Commit 'Author identity unknown' 에러 발생 (0) | 2021.08.08 |