반응형
기본 사항
- git init : 새로운 git 저장소 생성
- code . : vscode를 실행
- git branch -M main : master branch를 main 으로 이름 변경
계정 등록
- git config --global user.email : 이메일 등록
- git config --global user.name : 이름 등록
상태 확인
- git status : git 상태 확인
- git add : 파일 수정 이력 기록(commit 전 단계)
- git diff : add되지 않은 이력과 add된 이력의 차이점 확인
commit 이력 확인
✔ log
- git log : commit 이력 확인. 해시코드 확인 가능.
- git log --oneline --graph --decorate --all -<숫자>
- git log 이후의 옵션들은 선택적으로 사용할 수 있다.
- --oneline : commit 해시와 제목만 나타냄.
- --graph : 브랜치 흐름을 그래프로 나타냄
- --decorate : 간결하게 표시
- --all : HEAD와 관계 없는 모든 브랜치 확인
- -<숫자> : commit 이력을 최신 <숫자> 개수만 확인
파일/폴더 삭제
- git rm <파일명> : 로컬&원격 저장소에서 git 파일 삭제
- git rm --cached <파일명> : 원격 저장소에서만 파일 삭제
- git rm -r --cached <폴더명> : 하위폴더 모두 삭제
- git rm -r --cached . : git cache 삭제
상대참조(Relative Ref)
✔ ^<num>
- git checkout <브랜치>^ :
- <브랜치>를 기준으로 HEAD가 1개의 commit 위로 이동
- git checkout <브랜치>^<num> :
- <브랜치>를 기준으로 HEAD가 num번째 부모 commit으로 이동
✔ ~<num>
- git checkout <브랜치> ~<num> :
- <브랜치>를 기준으로 HEAD가 한번에 num만큼 commit 위로 이동
- git checkout <브랜치>^<num>~<num2> :
- <브랜치>를 기준으로 HEAD가 num번째 부모 commit으로 이동하고 num2만큼 위로 이동
브랜치 병합
✔ merge
- git merge <브랜치> : <브랜치>를 현재 Checkout된 브랜치에 합친다.
✔ rebase
- git rebase <브랜치> <옮길 브랜치> : commit의 순서를 바꿔준다. commit 흐름을 한 줄로 정리할 때 사용된다.
- <옮길 브랜치>를 <브랜치> 위로 이동
- <옮길 브랜치>를 지정하지 않으면 현재 위치한 branch로 자동 선택된다.
- <브랜치> 가 자식 브랜치라면 <브랜치>에 바로 옮겨진다.
✔ merge vs rebase
- merge는 commit 시점 기준으로 병합(모든 branch의 commit이 섞이게 됨)
- rebase는 branch 기준으로 병합.
- commit 해시가 다르다
- 그대로 옮겨지는게 아니라 새롭게 생성된다.
- 그 때문에 conflicts가 발생 할 때, 가장 마지막 commit을 비교하는 방법으로 해결이 안된다.
feature 브랜치 병합
feature 브랜치의 작업을 main 브랜치로 통합하는것과
원격저장소에서 push하고 pull하는 작업입니다
작업 되돌리기
✔ reset
- 애초에 commit하지 않은 것처럼 예전 commit으로 브랜치를 옮긴다.
- "히스토리를 고쳐쓴다"는 점 때문에 원격 repository에는 사용되지 않는다.
- git reset HEAD^ : 가장 최근 commit 내역 삭제
- git reset <커밋 해시> : commit으로 되돌리기
- git reset --hard <커밋 해시> : commit으로 되돌리고, 그 이후의 모든 내용을 지운다.
✔ revert
- 되돌리려고한 commit의 아래에 되돌린 내용이 새롭게 commit된다.
- 이 되돌린 내용을 다른 사람들과 공유할 때 reset 대신 사용된다.
- revert를 하면 다른 사람들에게도 push가 가능하다.
- git revert <브랜치> : 현재 위치 위에 <브랜치>가 새롭게 추가된다.
작업 옮기기
✔ cherry-pick
- 옮길 commit이 뭔지 알 때 사용한다.
- 개별 커밋을 골라서 HEAD위에 복사본을 만들 수 있다.
- git cherry-pick <커밋 해시1> <커밋 해시1> <...> : 현재 위치(HEAD) 아래에 <Commit1> <Commit2> <...>의 복사본을 만든다.
✔ rebase -i
- 옮길 commit이 뭔지 모를 때 사용한다.
- 커밋의 순서를 바꾸거나 일부만 골라내기 유용하다.
- git rebase -i <브랜치> : 현재 위치부터 <브랜치>까지의 commit들을 골라서 복사본을 만든다.
- 남길 commit, squash 등 세부 수정이 가능해진다.
- pick한 commit 외에 squash(s)를 하면 작업 내역이 없어지는 게 아니라 보관이 된다.
- git rebase -f <브랜치> <commit> : 브랜치로 checkout 한 후 commit으로 브랜치 이동한다.
디버깅
✔ bisect
- 이진 탐색으로 결함을 유발하는 commit을 찾는다.
- git bisect start : 탐색 시작
- git bisect bad <커밋 해시> : 문제있는 commit 기록
- git bisect good <커밋 해시> : 문제없는 commit 기록
- git bisect reset : 탐색 종료
태그 추가 및 검색
✔ tag
- git tag <태그명> <커밋 해시> : commit에 태그를 붙임
- git tag : 태그 확인
- git show <태그명> : 태그가 붙은 commit에 대한 정보를 나타냄
- git tag -d <태그명> : 태그 삭제
✔ describe
- 가장 가까운 tag에 비해 상대적으로 어디에 위치해있는지 알려준다.
- 커밋 히스토리에서 앞 뒤로 여러 커밋을 이동하고 나서 커밋 트리에서 방향감각을 다시 찾는데 도움을 준다.
- git describe <ref> : ref가 부모 tag와 얼마나 떨어져 있는지 나타냄(ref 값이 없으면 자동으로 HEAD가 위치한 곳을 사용)
- 출력 값 ⇒ <tag>_<numCommits>_g<hash>
- <tag> : 가장 가까운 부모 tag를 나타냄
- <numCommits> : tag가 몇 commit 떨어져 있는지 나타냄
- <hash> : commit의 해시값
원격 저장소 ↔ 로컬 저장소
✔ clone
- git clone <github_URL> : github에 commit된 소스 다운로드
- git clone -b [branch_name] [github_URL] : 특정 브랜치만 clone
- git remote update git checkout -t origin/[브랜치명] : clone 시 main 브랜치 외에 다른 브랜치 clone
✔ remote
- git remote -v : git에 등록된 원격 저장소 리스트를 확인
- git remote add origin <github_주소> : 내 컴퓨터에 있는 로컬 저장소와 원격 저장소(github repository)를 연결
✔ fetch
- 실제로 로컬 파일들이나 브랜치가 변경되지는 않는다.
- 변경을 원하면 fetch 이후에 cherry-pick, rebase, merge origin main을 해야한다.
- git fetch : 원격 저장소에만 있는 커밋들을 로컬 저장소로 다운로드
✔ pull
- 원격 저장소에만 있는 커밋들을 로컬 저장소로 다운로드와 업데이트를 동시에 할 수 있다.
- git pull <원격 저장소 명> <브랜치> : 원격저장소에서 fetch 후 merge(fetch + merge). 원격저장소와 로컬 저장소의 Commit 이력이 전부 유지된다.
- git pull origin main
- git pull --rebase : pull과 동시에 commit 이력이 정리된다. 다른 사람의 commit 기록이 삭제되니 주의 필요.
✔ push
- git push origin <브랜치> : 원격 저장소에 업로드하고, 원격 저장소는 갱신됨
그 외
✔ commit
- git commit : 파일 수정 이력 기록
- git commit -m <커밋_메세지> : commit 생성
- git commit --amend : commit 메세지 변경
✔ branch
- git branch : branch 목록 확인
- git branch <브랜치> : branch 생성
- git checkout -b <브랜치> : branch 생성과 동시에 이동
- git checkout <브랜치> : branch 이동
- git branch -d <브랜치> : branch 삭제
반응형
'window 환경에서 개발하기 > Git' 카테고리의 다른 글
협업의 첫 번째 단계 ③ git commit 컨벤션 이란? (0) | 2023.04.26 |
---|---|
협업의 첫 번째 단계 ② branch 생성 및 commit 방법 (0) | 2023.04.18 |
협업의 첫 번째 단계 ① git clone으로 다른 repository 가져오기 (0) | 2023.04.18 |
윈도우 환경에서 git 사용하는 방법 ② github 저장소에 연결하기 (0) | 2023.04.18 |
윈도우 환경에서 git 사용하는 방법 ① github 사용 이유, Window git 설치 (0) | 2023.04.18 |