각 영역의 상태를 확인하기
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 |