💡수업 목표💡
- 협업을 위한 작업 관리 스킬을 익힙니다- PR과 commit 되돌리기, 임시 저장
- 협업하기 좋은 사람이 되기 위해 기본 협업 매너를 익힙니다.
- Github 으로 다른 사람과 소통합니다 - 내 포트폴리오, 오픈소스
Git의 Commit 심화
git을 사용해서 코딩을 하다보면 직전 commit을 덮어쓰기하거나(—amend), 커밋 내용을 되돌리거나(revert) 커밋을 아예 취소해야하는 (reset) 상황이 종종 발생한다.
직전 commit 메시지 수정하기 - commit —amend
git commit 커맨드에 --amend 플래그를 붙이면 직전에 남긴 커밋을 수정할 수 있다.
$ git commit --amend
$ git commit --amend -m "수정할 커밋메시지"
commit 다시쓰기 - revert
commit을 삭제하거나 덮어쓰기보다는 커밋을 새로 추가하는 방식으로 코드를 되돌린다.
$ git revert [commit-ish]
$ git revert HEAD
commit 초기화 하기 - reset
--soft옵션 : 모든 로컬 변경사항을 유지
모든 로컬 변경사항을 유지되어 있고 Stage 되어 있다. add 없이 바로 commit 진행이 가능하다.
이때는 보통 branch를 이동하는 용도로.
# --soft 옵션
$ git reset --soft [commit-ish]
--mixed 옵션 : 작업상태는 그대로 두지만 인덱스는 리셋.
mixed 옵션은 변경이력은 삭제되지만 변경 내용 자체는 남아있다.
Staging Area에 들어갈 내용을 빼거나 추가하는 용도로 사용한다.
# --mixed 옵션
$ git reset [commit-ish]
$ git reset --mixed [commit-ish]
--hard 옵션: 모든 작업 상태 내 변경사항 버림
hard옵션을 사용하면 돌아간 커밋 이후의 변경 이력은 모두 삭제 됩니다.
코드, 파일 모두 지정한 commit의 이력으로 된다.
# --hard 옵션
$ git reset --hard [commit-ish]
원격 repo에 올린상태에서 commit을 변경하기 - push --force
로컬 repo에 있는 commit을 삭제한 채로 원격 repo에 업데이트 할려고 하면 당연히 에러가 뜨게된다.
이때 강제로 푸쉬해서 로컬 repo를 기준으로 변경이력을 맞춘다.
$ git push -f [원격 주소 이름] [업데이트 브랜치 이름]
단, 되돌리기 작업은 협업하는 다른 사람들에게 영향을 줄 수 있으므로 공용 브런치는 절대 하면 안되고 반드시 개인만 쓰는 브런치에서만 사용하도록 한다.
5. 프로젝트 변경사항 임시 보관함 - stash
자신이 어떤 작업을 하던 중에 다른 요청이 들어와 하던 작업을 멈추고 잠시 브랜치를 변경해야 할 일이 있을때, 아직 마무리하지 않은 작업을 commit하지 않고 스택에 잠시 저장할 수 있도록 하는게 stash이다. 이를 통해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리할 수 있다.
$ git stash
$ git stash save
스택에 stash가 생기면서 워킹 디렉토리는 깨끗해졌다. 이제 아무 브랜치나 쉽게 변경이 가능하다.
임시보관함 목록보기 - stash list
$ git stash list
stash@{0} 이렇게 앞에 Stash 이름이 있다.
임시보관함에서 불러오기 - stash apply
Stash를 통해 임시저장할 때 수정했던 파일들을 복원해준다.
이름이 없으면 Git은 가장 최근의 Stash를 적용한다.
$ git stash apply
$ git stash apply [stash 이름] #stash@[2]
Git은 Stash를 적용할 때 Staged 상태였던 파일을 자동으로 다시 Staged 상태로 만들어 주지 않는다. 그래서 --index 옵션을 주어서 Staged 상태까지 적용한다.
# Staged 상태까지 불러오기
$ git stash apply --index
임시보관함에서 삭제하기 - stash drop
apply통해 stash 적용하더라도 여전히 스택에 stash가 남아있다. 나중에 헷갈리지 않을려면 apply하고 바로 삭제하는게 좋다.
$ git stash drop
$ git stash drop [stash 이름] #stash@[2]
삭제를 잊을까봐 동시에 apply와 drop을 함께 할 수있다.
# apply + drop의 형태
$ git stash pop
'스파르타코딩클럽 > Git' 카테고리의 다른 글
협업을 위한 GIT 개발일지 - 3주차 (4) Git으로 프로젝트 완벽 관리 (0) | 2022.09.16 |
---|---|
협업을 위한 GIT 개발일지 - 3주차 (3) Git 협업 가이드 (0) | 2022.09.16 |
협업을 위한 GIT 개발일지 - 3주차 (1) PR(Pull Request) (0) | 2022.09.16 |
협업을 위한 GIT 개발일지 - 2주차 (2) Git Branch, Merge, conflict (0) | 2022.09.15 |
협업을 위한 GIT 개발일지 - 2주차 (1) GitHub issue 사용하기 (0) | 2022.09.15 |