reset 후에도 다시 최신 커밋으로 돌아갈수 있다. 똑같이 reset +커밋아이디
최신 커밋 아이디를 모른다면?
git reflog 로 조회할 수 있음 (HEAD가 가리켜온 커밋들을 보여줌)
커밋 히스토리 조회하기
git log --pretty=oneline --all : 현재 HEAD가 가리키는 브랜치를 포함한 모든 브랜치의 커밋 히스토리 조회
(모든 커밋이 순서대로 보여짐)
git log --pretty=oneline --all --graph : 코드흐름을 그래프로 나타내줌 *=커밋 ---브랜치
get rebase 사용하기 : merge와 달리 커밋이 남지 않음 / 깔끔한 커밋 히스토리를 원할때
상황) main branch에서 test branch 생성하고, 각각의 코드를 수정 후 커밋 (main: A, test: B)
main branch에서 test branch rebase 하기 -> 커밋을 재배치한다
git rebase test => 메인 브랜치의 베이스를 테스트 브랜치로 재지정
conflict 해결 후 커밋하지않고!
git rebase --continue => 리베이스를 계속 진행해라
=> 코드흐름: base - B - A (하나의 브랜치가 됨)
한 브랜치에서 작업 도중에 다른 브랜치로 checkout 하면 작업하던 내용이 사라짐
(HEAD가 다른 브랜치를 가르키면 워킹디렉토리도 해당 브랜치의 커밋 내용으로 바뀌기때문)
git stash
워킹디렉토리에서 작업하던 내용을 깃이 (stack)에 따로 보관 & 워킹디렉토리는 다시 최근 커밋상태로 초기화됨
stack: 입구와 출구가 같은 형태
git stach list -> 스택 조회
다른 브랜치로 checkout 가능해짐
다시 작업하던 브랜치로 돌아와서 스택에 있는 내용 워킹디렉토리로 가져오기
git stash apply
git stash apply stash@{n} : 특정 스태시 불러오기
잘못된 브랜치에서~ 작업하고 있었다면? ㅠ ㅁ ㅠ !
이때도 stash 를 쓸수있다! stack 은 꼭 같은 브랜치에서만 가져올수있는게 아님
스택이 많이 쌓이면 헷갈리니까 이미 불러온 스태시는 삭제해주자
git stash drop stash@{n}
apply 와 drop을 한번에 해주는 커맨드 = pop
필요한 커밋만 가져오기
브랜치A에서 커밋1 -> 커밋2 로 거쳐왔을때
브랜치B에 커밋 1만 반영하고 싶다면
머지하고 필요없는 내용을 지워도 되지만 그걸 더 편하게 해주는 커맨드
git cherry-pick + 커밋 아이디
커밋1-> 커밋2 후에 커밋1 삭제하고 커밋2 내용만 유지하고 싶을때
git reset --soft 커밋1
git add . (워킹디렉토리는 커밋2 내용을 가지고있기 때문에)
git commit
=> 하나의 커밋만 남길수있다
버전관리를 할 필요가 없는 파일이 있다면
-> .gitignore 파일에 그 이름을 추가하고 버전관리를 시작
add나 commit 하지않아도 git에서 무시함
(github에서 레포지토리 생성할 때 add.gitignore 파일을 만들수있다)
또는 로컬에서 .gitignore 파일을 만든다음 무시하고싶은 파일들을 넣어 push 해서 만들수있다
ignore 파일 추천해주는 사이트 (운영체제/프로그래밍언어/개발환경 등에 따라)
https://www.toptal.com/developers/gitignore
gitignore.io
Create useful .gitignore files for your project
www.toptal.com
깃... 내용도 많고 많다
'개발 공부 일지 > Git' 카테고리의 다른 글
| Git 복습 (1) | 2024.07.12 |
|---|---|
| git 의 세가지 작업 영역 (0) | 2024.07.11 |
| Git 브랜치 다루기 (0) | 2024.07.10 |
| Git 커밋 다루기 (1) | 2024.07.10 |
| Github에 커밋이 안된다면? (0) | 2024.07.10 |