Git 실전

Yzzang·2024년 1월 4일
0

[git]

목록 보기
12/12

git reset —hard [커밋아이디] 을 통해 reset 되었을 때, 다시 최신 커밋으로 돌아오는 법

git reset —hard [가장 최신 커밋아이디]or[HEAD@??] 하면 다시 돌아옴
git 리셋을 하면 사라지는게 아니라 헤드가 가리키는 브랜치가 달라지는 거임

git reflog : 헤드가 가르키던 커밋들의 id확인

커밋히스토리 보는법

git log —pretty=oneline (하나의 브랜치)
git log —pretty=oneline —all(여러 브랜치) - 이렇게 하면 가독성이 않좋다.
git log —pretty=oneline —all —graph : 그래프를 통해 흐름을 잘 보여줌 (*는 커밋 1개 나타냄)

기능들 추가하고 합쳐서 merge쓸 수도 있지만 깔끔한 커밋 히스토리를 원한다면
git rebase [브랜치] : 커밋을 재배치
(merge 할 때랑 비슷함)
git add . 해주고 git rebase —continue 함

merge와 rebase 차이 (결과는 같지만 깔끔하게 만들기 위해 rebase 씀)

  1. rebase는 새로운 커밋을 만들지 않음
  2. rebase로 만들어진 커밋 히스토리는 merge로 만들어진 커밋히스토리 보다 더 깔끔

즉 merge는 두브랜치를 합쳤다는 정보가 커밋히스토리에 남아야하는 경우 사용,
rebase는 커밋 히스토리를 깔끔하게 유지하는게 더 중요한 경우 사용

작업내용 임시 저장, 잘못된 브랜치에서 작업하고 있었을 때

git stash : working directroy에서 작업하던 내용을 깃(자료형 stack)이 따로 보관
(최근 커밋 이후 내용 스택에 저장하고, 가장 최신 커밋의 내용으로 돌아감)
git stash list: 스택에 저장 확인
git stash apply ([아이디: stash@?]): 스택에 저장된 내용이 나옴 ,apply 까지만 써도 됨
git stash drop ([아이디: stash@?]): 스택에 저장된 내용 삭제
git stash pop [작업 내용의 아이디]: 작업 내용을 적용하면서 동시에 스택에서 제거

잘못된 브랜치에서 작업하고 있었을 때

  1. git stash로 stack에 작업내용 저장
  2. 올바른 브랜치로 가서 git stash apply 하기

필요한 커밋만 가져올 때

git cherry-pick [커밋아이디]: 자신이 원하는 작업이 들어있는 커밋들만 가져와서 현재 브랜치에 추가

여러 커밋을 하나의 커밋으로 만들기(불필요한 커밋 없애기)

git reset —soft or mixed : 워킹디렉토리 안건들고 돌아가서 커밋하기
(git commit—amend는 마지막 커밋수정하기엔 좋음)

gitignore 을 통해 원하지 않는 파일무시하기

요약

  • git reflog : HEAD가 그동안 가리켜왔던 커밋들의 기록을 출력
  • git log --all --graph : 모든 브랜치의 커밋 히스토리를, 커밋 간의 관계가 잘 드러나도록 그래프 형식으로 출력
  • git rebase [브랜치 이름] : A, B 브랜치가 있는 상태에서 지금 HEAD가 A 브랜치를 가리킬 때, git rebase B를 실행하면 A, B 브랜치가 분기하는 시작점이 된 공통 커밋 이후로부터 존재하는 A 브랜치 상의 커밋들이 그대로 B 브랜치의 최신 커밋 이후로 이어붙여짐(git merge와 같은 효과를 가지지만 커밋 히스토리가 한 줄로 깔끔하게 된다는 차이점이 있음)
  • git stash : 현재 작업 내용을 스택 영역에 저장
  • git stash apply [커밋 아이디] : 스택 영역에 저장된 가장 최근의(혹은 특정) 작업 내용을 working directory에 적용
  • git stash drop [커밋 아이디] : 스택 영역에 저장된 가장 최근의(혹은 특정) 작업 내용을 스택에서 삭제
  • git stash pop [커밋 아이디] : 스택 영역에 저장된 가장 최근의(혹은 특정) 작업 내용을 working directory에 적용하면서 스택에서 삭제
  • git cherry-pick [커밋 아이디] : 특정 커밋의 내용을 현재 커밋에 반영
profile
미래개발자

0개의 댓글

관련 채용 정보