Git

Git을 활용한 형상 관리 2편

Joon0464 2021. 6. 23. 16:13

1. Git reset

테스트를 위한 준비로 a.txt를 커밋한 상태에서 b.txt를 추가하여 커밋한다.

1) mixed

옵션 없이 reset을 사용하면 기본 값으로 mixed 옵션이 적용된다. mixed 옵션을 사용하면 되돌아간 커밋 정보 이후의 파일정보는 그대로 남고 untracked file에 b.txt가 존재하는 것을 볼 수 있다. 즉, b.txt가 생성되고 아직 git add를 하지 않아 스테이징에 올라가지 않은 상태로 돌아간다.
git log --oneline --all을 하면 add b.txt 커밋 정보가 출력되는데 아직 원격 저장소에 해당 정보가 남아있기 때문이다.
push에 -f 옵션을 적용하면 원격 저장소에 커밋 정보를 덮어씌우게 된다.

2) soft

soft 옵션을 사용하면 mixed와 마찬가지로 커밋 정보 이전의 파일 정보가 남아있다. 하지만 soft는 mixed와 다르게 b.txt가 git add되어 스테이징에 올라간 상태로 존재한다.

3) hard

hard 옵션을 사용하면 되돌아가는 커밋 이후의 정보와 파일이 모두 제거된다. 따라서 b.txt 자체가 삭제된 것을 볼 수 있다.

2. Branch 사용

- 기존 모든 기능이 안정적으로 동작하는 버전에서 새로운 기능을 추가할 때

- 기존 운영중인 프로그램에서 버그가 발생하여 해당 버그를 수정할 때

- 운영중인 프로그램 코드를 개선하고자 할 때

git branch : 로컬 브렌치의 목록을 출력
: -v 옵션을 사용하면 마지막 커밋 정보를 함께 출력
: [*]이 함께 표시되는 브렌치는 현재 HEAD가 가리키는 브렌치가 된다.
git branch [-f] [브렌치 이름] [커밋 이름] : 브렌치 생성 및 이동
: 기본 생성 위치는 현재 HEAD가 위치하고 있는 곳 하위에 브렌치 생성
: 브렌치내 커밋 위치 변경할 때는 [-f] 옵션과 [커밋체크섬]을 사용한다.
git branch -r[v] : 원격 저장소 브렌치의 목록을 출력
: [-v] 옵션을 사용할 경우 마지막 커밋 정보를 함께 출력
git checkout [브렌치 이름] : 기존 브렌치를 가리키는 HEAD 포인터를 새로 생성한 브렌치로 지정
git checkout -b [브렌치 이름][커밋 체크섬] : 브렌치 생성과 체크 아웃을 동시에 진행
git merge [브렌치 이름] : 현재 작업중인 브렌치의 내용을 다른 브렌치에 병합할 때 사용
git rebase [브렌치 이름] : 현재 작업중인 브렌치에 존재하는 커밋을 다른 브렌치에 재배치 시킴
: 히스토리를 깔끔하게 구성 가능
git branch -d [브렌치 이름]
git branch -D [브렌치 이름]
: 브렌치를 삭제할 때 사용
: [-D] 옵션은 강제의 의미를 갖는다.
: 일반적인 삭제 작업이 불가능할 때 사용

* 은 현재 작업중인 브렌치를 가리킨다. Sub branch1이 생성된 모습이다.
checkout 명령어를 사용하면 작업중인 브렌치가 바뀌게되고 HEAD가 가리키는 브렌치도 바뀌게 된다.
새로운 브렌치에 c.txt를 추가하고 커밋한다.

 

HEAD 포인터를 Master 브렌치로 변경하고 Merge를 사용하면 Master 브렌치에 Sub_branch1의 커밋 정보가 병합된다.
만약 병합을 잘못하면 리셋기능을 사용하면 원래대로 돌아갈 수 있다.
-D 옵션을 사용하여 브렌치를 삭제할 수 있다.
checkout에 -b 옵션을 사용하면 브렌치를 생성하면서 HEAD 포인트를 생성한 브렌치로 변경한다.
hotfix 브렌치를 master 브렌치 기준으로 생성한다.
hotfix 브렌치를 master 브렌치를 기준으로 생성한다. 해당 브렌치에서는 a.txt를 수정하고 커밋한다.

'Git' 카테고리의 다른 글

Git을 활용한 형상 관리 1편  (0) 2021.06.21