본문 바로가기
개발 공부 일지/Git

Git 복습

by yelimu 2024. 7. 12.

각 영역의 상태를 확인하기

 

git status : staging area 를 조회

git log : repository 를 조회

cat + 파일명 : working directory 를 조회 


git reset --soft => staging area에 add 로 staged 상태의 파일들은 그대로 & HEAD 는 이전 커밋으로 옮겨감

                            옮겨간 HEAD 가 가리키는 커밋 대비 변경된 파일은 modified 상태가 됨

git reset --mixed => staging area에 add 로 staged 상태의 파일들이 Unstaged 됨 = modified -> 다시 add 해주면 됨

git reset --hard => working directory와 staging area, repository 모두 이전 커밋과 같이 됨 = Unmodified = nothing to commit


git branch -> 전체 브랜치와 현재 체크아웃되어있는 브랜치 확인 (*)'=

+ -d 브랜치이름 : 삭제

+ chechout -b 브랜치이름 : 새로 만들면서 이동


git merge main : 현재 위치 브랜치에서 main 브랜치를 합치겠다. (main 브랜치에 있는 커밋의 내용을 지금 위치로 가져오겠다)

git merge --abort : 머지 conflict 해결하지않고 취소하기

여러개 파일에서 conflict 발생하면

1) 하나씩 해결 -> 하나씩 add, 다하고 commit

2) 모두 해결 -> 모두 add 하고 commit

 

git merge origin/premium : 리모트 origin의 premium 브랜치 내용을 가져와서 합쳐라 

(fetch로 가져왔을때는 merge 를 따로 해줘야함(optional))


github 에서 레포지토리를 만들고, = 리모트 레포지토리

로컬 레포지토리의 내용을 해당 리모트 레포지토리로 보내기 위한 커맨드

git remote add origin + 리모트 레포지토리 주소  : 리모트 레포지토리를 origin 이라는 이름으로 add 하겠다

git push -u origin main  : 현재 로컬 레포지토리에 있는 main 브랜치의 모든 커밋을 origin 이라는 레포지토리로 보낸다

 

-u = --set-upstream 옵션의 약자 : 로컬 레포지토리의 main 브랜치가 -> origin에 있는 main 브랜치를 tracking 하도록 설정

이 옵션을 주지 않으면 tracking connection이 없기 때문에 나중에 git push를 하고 싶을 때 따로 적어줘야함 

git push origin main:main 

 origin 이라고 지정해준 리모트 레포지토리를 나타냄

main : 로컬의 main 브랜치 에서

main : 리모트의 main 브랜치로 push 하겠다~


git push 해주면 

HEAD 가 로컬의 main 과 리모트의 main 을 가르키고 있음 = 리모트 main 브랜치도 최신 내용을 가지고 있음

리모트에 premium 브랜치 만들어주고 푸시하니 아래와 같이 됨 


detached HEAD: git checkout +커밋 => HEAD가 브랜치가 아닌 커밋을 직접 가리키는 상태 

: 과거의 특정 커밋에서 새로운 브랜치를 만들 때 주로 사용한다.


머지의 종류

1) Fast-forward 머지 : 새로운 머지가 생성되지 않는다. 다만 뒤쪽 커밋에 있던 브랜치만 앞쪽으로 당겨옴

2) 3-way 머지 : 머지커밋이 생성된다. 두개의 브랜치 중 base에서 변화가 생긴 커밋을 채용한다


git diff = 커밋간의 차이점 또는 브랜치간의 차이점을 보여준다

git diff premium origin/premium -> 로컬 premium 브랜치와 리모트origin premium 브랜치의 차이를 보여줌


git blame +파일명 => 파일 코드 한줄씩 커밋 정보를 알려줌


git revert : 최신 커밋의 작업을 되돌리고 다시 커밋을 해주는 커맨드 

  - > git reset 은 이전 커밋으로 돌아가는 작업인 반면 git revert 는 이전 커밋 상태로 되돌리는 커밋을 추가해준다. 

리모트 레포지토리보다 로컬 레포지토리가 이전 커밋인 경우 push가 불가함 (pull 해주고 push를 해야함) 


작업 내용을 stack 에 저장할 수 있는 git stash 

list 에서 stash 넘버로 삭제하거나(drop) 적용할수있는데 (apply 또는 pop) 

error: unknown switch `e' 라는 에러가 발생해서 찾아보니 윈도우에서는 따옴표를 꼭 해주어야 한다고 한닥

git stash drop 'stash@{n}'

스태시 뿐만 아니라 HEAD@{n} 형식도 따옴표가 필요하다 


git cherry-pick + 커밋 아이디 => 원하는 커밋만 지금의 브랜치로 가져오기

git reset 으로 커밋 덮어쓰기 (working directory는 유지하는 reset 후 재커밋) 

'개발 공부 일지 > Git' 카테고리의 다른 글

Git - branch merge 방법 / Git Flow 브랜치 전략  (0) 2024.07.18
git 의 세가지 작업 영역  (0) 2024.07.11
Git 활용하기  (0) 2024.07.11
Git 브랜치 다루기  (0) 2024.07.10
Git 커밋 다루기  (0) 2024.07.10