Git
Git : 명령어 정리
죽이죽이
2024. 1. 17. 20:31
※ git <명령어> -h
- 해당 명령어에서 사용할 수 있는 옵션 확인
※ git init
- git 초기화
※ git config -l
- git 설정 확인
※ git config --global <설정명> <설정값>
- git 설정 변경 (단일 설정 변경)
※ git config --global -e
- git 설정 에디터 사용해서 변경 (설정 확인 및 변경)
※ git config <설정명>
- git 설정값 확인
※ git config --global core.editor "code --wait"
- vscode에서 설정 확인 및 변경 가능하도록 지정
※ git config --global core.autocrlf <설정값>
- 문자열 줄바꿈 지정 (window : true / mac : input)
※ git config --global alias.<별칭> <명령어>
- 명령어에 별칭 지정
※ git config --global mergetool.keepBackup false
- merge conflict 수정 후 orig 파일 생성 X
※ git config --global alias.hist "log --graph --all --pretty=format:'%C(yellow)[%ad]%C(reset) %C(green)[%h]%C(reset) | %C(white)%s %C(bold red){{%an}}%C(reset) %C(blue)%d%C(reset)' --date=short"
- log 사용자 지정
※ git status
- 현재 작업중인 파일 상태 확인
※ git status -s
- 현재 작업중인 파일 상태 확인 (한줄 확인)
※ git add <파일명>
- working directory에서 staging area로 파일 이동
※ git rm <파일명>
- 파일 삭제 후 staging area에 즉시 반영
※ git rm --cached <파일명>
- staging area에서 파일 제거 (working directory로 이동)
※ git mv <기존 파일명> <변경할 파일명>
- 파일명 변경 후 staging area에 즉시 반영
※ git clean -f
- 필요없는 파일 삭제 (untracked 파일도 삭제 가능)
※ git clean -fd
- 필요없는 파일 및 디렉토리 삭제 (untracked 파일도 삭제 가능)
※ git diff
- working directory 안의 파일을 이전 버전(commit 또는 staging area)과 비교 확인
※ git diff --staged / git diff --cached
- staging area 안의 파일을 이전 버전(commit)과 비교 확인
※ git diff <해시코드> <해시코드>
- 두개의 commit 변경사항 비교
※ git diff <해시코드> <해시코드> <파일명>
- 두개의 commit 변경사항 비교 (해당하는 파일만 비교)
※ git diff <브랜치명>..<브랜치명>
- 두개 브랜치 사이의 내부 내용 확인
※ [diff]
tool = vscode
[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE
- vscode에서 비교 확인 가능 (기존 명령어 diff -> difftool로 사용)
※ git commit -m "<메시지>"
- staging area에 있는 모든 파일을 git directory로 메시지와 함께 업로드
※ git commit -am "<메시지>"
- working directory, staging area에 있는 모든 파일을 git directory로 메시지와 함께 업로드
※ git commit --amend -m "<메시지>"
- 가장 최근에 한 commit 메시지/내용 변경
※ git log / git log HEAD
- commit 완료된 history 확인 (최근 commit)
※ git log HEAD~1
- HEAD가 가리키고있는 이전 부모부터 확인
※ git log --reverse
- commit 완료된 history 확인 (오래된 commit)
※ git log --oneline
- commit 완료된 history 확인 (한줄 확인)
※ git log -p
- commit 완료된 history 확인 및 변경사항 확인
※ git log -p <파일명>
- 해당 파일의 commit 내용 확인
※ git log -s
- commit 완료된 history 간단하게 확인
※ git log --graph --all
- git log를 간단한 그래프 형식으로 시각화
※ git log --pretty=format:"<방식>"
- log 보이는 방식 사용자 지정
※ git log -3
- 최근 commit 중 3줄만 확인
※ git log --author="<작성자>"
- 해당 작성자의 commit 확인
※ git log --before="<년-월-일>"
- 특정 날짜 이전 commit 확인
※ git log --grep="<문자열>"
- commit 메시지에 해당 문자열이 있을 경우 확인
※ git log -S "<문자열>" -p
- commit 내부 내용에 해당 문자열이 있을 경우 확인
※ git log <브랜치명>..<브랜치명>
- 두개 브랜치 사이의 로그들만 확인
※ git reflog
- 현재까지 실행했던 명령어 및 변경된 작업 확인
※ git show <해시코드>
- 특정 해시코드를 가진 commit 내용 상세 확인
※ git show <해시코드>:<파일명>
- 특정 해시코드를 가진 commit 안에서 해당 파일 내용만 확인
※ git show <태그명>
- 특정 태그 상세정보 확인
※ git show HEAD
- HEAD가 가리키는 최신 commit 확인
※ git checkout <태그명>
- 특정 태그로 이동
※ git checkout <브랜치명>
- 특정 브랜치로 이동
※ git checkout <해시코드>
- 특정 해시코드로 이동
※ git checkout -b <브랜치명>
- 브랜치 생성 후 바로 이동 (HEAD 위치에 생성)
※ git checkout -b <브랜치명> <태그명>
- 특정 태그에 브랜치 생성 후 바로 이동 (HEAD 위치에 생성)
※ git switch <브랜치명>
- 특정 브랜치로 이동
※ git switch -C <브랜치명>
- 브랜치 생성 후 바로 이동
※ git tag
- 모든 태그 확인
※ git tag <태그명>
- 태그 생성 (HEAD 위치에 생성)
※ git tag <태그명> <해시코드>
- 특정 해시코드를 가진 commit에 태그 생성
※ git tag <태그명> <해시코드> -am "<메시지>"
- 태그에 추가 정보 작성
※ git tag -l <태그명>
- 만들어진 모든 태그 중 특정 태그 확인 (와일드카드 사용 가능)
※ git tag -d <태그명>
- 태그 삭제
※ git branch
- 로컬에 있는 모든 브랜치 확인
※ git branch <브랜치명>
- 브랜치 생성 (HEAD 위치에 생성)
※ git branch -v
- 로컬에 있는 모든 브랜치 및 해당 브랜치의 commit 확인
※ git branch --merged
- 현재 브랜치에 merge 된 브랜치 확인
※ git branch --no-merged
- 현재 브랜치에 merge가 되지 않은 브랜치 확인
※ git branch -d <브랜치명>
- 브랜치 삭제
※ git branch --move <기존 브랜치명> <변경할 브랜치명>
- 브랜치 이름 변경
※ git branch --all
- 로컬, 서버에 있는 모든 브랜치 확인
※ git merge <브랜치명>
- 브랜치 merge (fast-forward merge 또는 three-way merge)
※ git merge --no-ff <브랜치명>
- 브랜치 merge (history에 merge 기록 남음)
※ git merge --abort
- 진행중인 merge 취소
※ git merge --continue
- merge 진행
※ [merge]
tool = vscode
[merge "vscode"]
cmd = code --wait $MERGED
- vscode에서 비교 확인 가능 (기존 명령어 merge -> mergetool로 사용)
※ git rebase master
- 파생된 브랜치를 master 브랜치에 재배치 (파생된 브랜치에서 실행)
※ git rebase --onto master <1차 파생 브랜치명> <2차 파생 브랜치명>
- 파생된 브랜치에서 한번더 파생된 브랜치를 master 브랜치에 재배치
※ git rebase -i <HEAD 포인터> / git rebase -i <해시코드>
- history 내의 특정 commit 변경 (메시지/내용 등)
※ git cherry-pick <해시코드>
- 파생된 브랜치에서 특정 commit만 master 브랜치에 재배치
※ git stash list
- 모든 stash 확인
※ git stash push -m "<메시지>"
- working directory, staging area에 있는 모든 파일을 stash에 저장 (tracked 되지 않은 파일은 제외)
※ git stash push -m "<메시지>"
- working directory에 있는 모든 파일만 stash에 저장 (tracked 되지 않은 파일은 제외)
※ git stash -u
- tracked 되지 않은 모든 파일을 stash에 저장
※ git stash show <stash 아이디>
- 수정된 내용 간단하게 확인
※ git stash show <stash 아이디> -p
- 수정된 내용 자세하게 확인
※ git stash apply
- list에서 가장 위에 있는 stash 적용 (list에서 삭제 X)
※ git stash apply <stash 아이디>
- 특정 stash 적용
※ git stash pop
- list에서 가장 위에 있는 stash 적용 (list에서 삭제 O)
※ git stash drop <stash 아이디>
- 특정 stash 삭제
※ git stash clear
- 모든 stash 삭제
※ git stash branch <브랜치명>
- 새로운 브랜치 생성 후 해당 브랜치에 stash 적용
※ git restore <파일명>
- working directory에서 tracked 되고있는 파일을 마지막 commit 상태로 복구
※ git restore --staged <파일명>
- staging area에서 working directory로 파일 이동
※ git restore --source=<해시코드> <파일명> / git restore --source=<HEAD 포인터> <파일명>
- working directory에서 tracked 되고있는 파일을 특정 commit 상태로 복구
※ git reset HEAD <파일명>
- staging area에서 working directory로 파일 이동
※ git reset <HEAD 포인터> / git reset <해시코드>
- history에서 commit 삭제 (해당 commit의 작업 파일은 working directory로 이동)
※ git reset --soft <HEAD 포인터> / git reset --soft <해시코드>
- history에서 commit 삭제 (해당 commit의 작업 파일은 staging area로 이동)
※ git reset --hard <HEAD 포인터> / git reset --hard <해시코드>
- history에서 commit 삭제/복구 (해당 commit의 작업 파일은 완전히 삭제/복구)
※ git reset --hard HEAD
- working directory, staging area의 모든 파일 삭제
※ git revert <HEAD 포인터> / git revert <해시코드>
- history에서 특정 commit 삭제 (변경된 commit 생성)
※ git revert --no-commit <HEAD 포인터> / git revert --no-commit <해시코드>
- history에서 특정 commit 삭제 (변경 사항을 staging area에 추가)
※ git blame <파일명>
- commit에 대한 정보 추적 (디버깅 목적)
※ git bisect start
- 디버깅을 할 시작지점 지정 (checkout으로 특정 commit으로 이동 후 실행)
※ git bisect good
- 상태 정상 지점
※ git bisect bad
- 문제 발생 지점
※ git bisect reset
- 디버깅 종료 후 기존 브랜치로 이동
※ git clone <깃허브 링크>
- 서버에서 프로젝트 받아오기
※ git clone <깃허브 링크> <폴더명>
- 서버에서 프로젝트 받아와서 해당 폴더에 저장
※ git push --set-upstream origin <브랜치명>
- 서버에 로컬에 있는 특정 브랜치 생성
※ git push
- 로컬에 있는 파일을 서버에 업로드
※ git push -f
- 로컬 기준으로 로컬에 있는 파일을 서버에 업로드 (충돌이 나더라도 로컬로 덮어씌워짐)
※ git push origin <태그명>
- 서버에 로컬에 있는 특정 태그 생성
※ git push origin --tags
- 서버에 로컬에 있는 모든 태그 생성
※ git push origin --delete <태그명>
- 서버에 있는 특정 태그 삭제
※ git push origin --delete <브랜치명>
- 서버에 있는 특정 브랜치 삭제
※ git fetch
- 원격 저장소에 있는 히스토리를 로컬에 다운로드 (작업중인 HEAD는 그대로 유지하면서 저장소에 업데이트된 히스토리 정보만 가져올때 사용)
※ git fetch <저장소명>
- 특정 원격 저장소에 있는 히스토리를 로컬에 다운로드
※ git fetch <저장소명> <브랜치명>
- 특정 원격 저장소에 있는 특정 브랜치의 히스토리만 로컬에 다운로드
※ git pull
- 원격 저장소에 있는 히스토리를 로컬에 다운로드 (작업중인 HEAD가 저장소에서 받아온 최신 commit을 가리킴)
※ git pull --rebase
- 원격 저장소에 있는 히스토리를 로컬에 다운로드 (rebase로 인해 로컬 히스토리가 조금더 깔끔해짐)
※ git remote
- 현재 프로젝트에 등록된 원격 저장소 정보를 확인 가능
※ git remote -v
- 현재 프로젝트에 등록된 원격 저장소 정보를 자세하게 확인 가능
※ git remote add <저장소명> <깃허브 링크>
- 현재 프로젝트에 다른 깃허브 링크 추가 (깃허브의 특정 repository에 연결 목적)
※ git remote show <저장소명>
- 특정 원격 저장소에 대한 정보를 자세하게 확인 가능