Git

kang·2020년 4월 13일
0

Git

목록 보기
1/1

Git

Git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.

작년 프로젝트에서 처음 Git을 사용하게 되었고, Git을 배우게 되었다.
Git을 사용하는 이유는 하나의 프로젝트에 여러명의 개발자들이 작업을 하게 되는 경우에, 형상관리가 편하며, Repository의 복사본을 로컬에 둘 수 있다.

내가 terminal에서 주로 사용하는 방식이다.
1. git add . or git add -p or git add 저장할 파일이름
2. git commit -m 'Commit Name'
3. git fetch
4. git merge
5. git push

  1. 내가 수정한 모든 파일을 저장(git add .)
    내가 수정한 파일을 단위별로 나누어서 추가 할지 안할지의 선택(git add -p)
    내가 저장할 파일 (git add 저장할 파일이름)
  2. 커밋 메시지 입력.
  3. 원격 저장소의 내용을 내 로컬과 비교.
  4. 원격 저장소와 로컬 저장소를 병합.
  5. 병합한 내용을 원격 저장소에 반영.

내가 사용했던 bitbucket은 origin, upstream의 remote branch가 있어서,
위 방식대로 작업한 내용을 origin에 올리고, upstream으로 pr(pull request)요청 후 현업 담당자가 코드리뷰 후 upstream에 merge하는 방식으로 진행했었다.

Stash

git stash을 사용하기 시작하면서 소스트리를 사용했다.
터미널로 stash 기능을 사용하기에 타이핑과 stash한 내용을 보기엔 터미널보다 소스트리가 편했기에...
stash는 브랜치에서 작업하던 변경사항들을 임시로 저장할 수 있고, 꺼내올 수 있다.

Cherry Pick

특정 commit을 한 내용을 가져올 수 있다.
여러 개발자들이 하나의 프로젝트를 진행할 때, 의외로 코드가 꼬이거나 사라지는 경험을 하게 되는데 이러한 경우에 유용하게 사용할 수 있으며, 내가 진행했던 프로젝트에서는 개발, 통합 테스트의 원격 브랜치가 따로 있었고, 통테에서 수정하거나 변경된 코드가 개발에 반영해야 하기 때문에 Cherry Pick을 사용했었다.

Reset

Reset은 말 그대로 다시 맞춘다고 생각하면 된다.
git reset을 사용할 경우 옵션을 입력해야 하는데, 옵션은 hard, mixed, soft 이렇게 3가지가 있다.
hard는 이력 이후의 모든 내용을 지운다.
즉, 내가 작업한 내용이 있고, reset으로 원하는 커밋 내용으로 돌아가는 순간! 해당 커밋 이후의 내용은 다 지워진다.
soft는 내가 작업한 이력(내용)도 남아있고 인덱스는 초기화되지 않는다.
mixed는 soft와 일치 하지만 인덱스가 초기화 되었다.
index 파일 상태를 기록, Staging Area로 불리며 저장한 내용이 워킹 디렉토에서 index 영역으로 정보가 저장되며 commit을 실행하면 index 저장소에 저장된다.
index가 어려운 느낌이 들었지만 간단히 생각하면 내가 작업한 변경사항들을 저장한 이력이라고 생각해도 될 것 같다.

Revert

reset과 유사하지만 커밋 이력 그대로 유지하기 때문에, 되돌린 커밋 이후의 이력들은 남아있습니다.
이력들이 남아 있기 때문에 충돌이 발생 할 수 있다.
reset는 커밋 이력이 삭제 되기 때문에,
원격저장소에 push한 상태에서 되돌리고 싶다면 revert를 사용해야 한다.

Rebase

git을 잘 하고 싶은 마음에 rebase를 사용하여 vi편집기를 만졌다가.. 결국 로컬 저장소를 지워버렸던 기억이 있다.
대표적으로 rebase를 사용하면 브랜치간에 merge도 가능하며, 커밋 메세지도 수정할 수 있다.
다만 원격 저장소에 push된 커밋은 Rebase를 하지 않습니다.

commit 변경
git rebase -i HEAD~5 현재 HEAD부터 최근 5개의 목록이 보여집니다.
목록을 보면 vi 편집기로 수정이 가능하다.

profile
ksb

0개의 댓글