BloByJames

Git 버전 관리 본문

프로그래밍

Git 버전 관리

blobyjames 2019. 12. 14. 19:20

깃(Git /ɡɪt)은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다.

출처: https://ko.wikipedia.org/wiki/깃_(소프트웨어)

이 이야기는 실화를 바탕으로 재구성 된 것입니다.

상황 1.

A: 지금 서버에서 잘못된 값을 주고있으니 빨리 업데이트 해야될 것 같아요.
B: 아 그거요? 저번주에 수정했는데 지금 develop 브랜치에 개발이 덜 된 작업이 있어서 지금 업데이트 못해요.
A: ....

상황 2.

B: (무아지경 코딩중)
A: 지금 운영서버 로그인이 안된다고하니 빨리 확인좀 해주세요.
B: 넵!
(빌드가 깨지는 상태지만 개발중인 코드를 백업하기 위해 일단 커밋한다.)
A: B님이 작업한거 받았는데 빌드가 안되네요?
B: 로그인 이슈 확인하느라 작업중인거 잠깐 커밋했어요.
A: ....

상황 3.

B: (무아지경 코딩중)
B: 마무리는 집에서 해야겠다. (작업중인 브랜치를 푸시한다.)
A: develop 브랜치 코드 왜이래요?
B: 헉! 제가 모르고 develop 브랜치에서 작업했네요.
A: ....

다루지 않는 것

  • checkout
  • fetch
  • merge
  • pull
  • push
  • rebase

다룰 것

  • cherry-pick
  • stash
  • reset / revert

cherry-pick

다른 브랜치의 커밋을 가져온다.

git cherry-pick <commit1> <commit2> <...>

# side 브랜치에서 작업 한 C2, C4 커밋이 필요하다.
git cherry-pick C2 C4

stash

작업중인 코드를 스택에 임시 보관한다.

git stash save <message>

git stash
git stash save my custom message

git stash list
stash@{0}: On master: my custom message
stash@{1}: WIP on master: 7d0ba4e initial commit

git stash pop stash@{0}
git stash list
stash@{0}: WIP on master: 7d0ba4e initial commit

reset / revert

커밋을 되돌린다.

reset

커밋하기 전으로 되돌린다.

git reset <option> <commit>

# C2 커밋을 되돌리고 싶다.
git reset C1

reset의 option은 soft, hard, mixed 세가지가 있다.

  • soft
# HEAD가 C1으로 이동하고, C2의 작업이 인덱스에 있다.(stage)
git reset --soft C1
  • hard
# HEAD가 C1으로 이동하고, C2의 작업이 모두 지워진다.
git reset --hard C1
  • mixed (기본)
# HEAD가 C1으로 이동하고, C2의 작업이 인덱스에 없다.(unstage)
git reset --mixed C1

revert

로컬 브랜치에서 reset을 주로 사용하지만, remote 브랜치의 커밋을 되돌리고, 이를 다른 사람과 공유하기 위해 revert를 사용한다.

git revert <commit>

# C2에 이슈가 있어 C1으로 롤백을 해야한다.
git revert HEAD

마무리

Git, 코드 백업용으로만 사용하지 말고 버전 관리를 해보자!

https://learngitbranching.js.org/

'프로그래밍' 카테고리의 다른 글

Read Only 개인정보처리방침  (0) 2020.06.24
짤해 개인정보처리방침  (0) 2020.02.14
linkable-text 개인정보처리방침  (0) 2019.08.17
Let’s Encrypt easily  (0) 2019.07.21
[Slide] ReactiveX의 이해  (0) 2017.04.05
Comments