버전 관리
git add filename // 스테이징 영역에 파일 추가
git commit -m "커밋 설명" // 스테이징 영역의 내용을 저장소에 커밋 (작업 디렉토리만 변경하고 스테이징하지 않은 내용은 커밋되지 않음)
git status // 상태 확인
git diff // 변경 사항 비교
파일 관리
git add test.txt
git rm test.txt
git checkout -- test.txt // 파일 시스템에서 실수로 삭제한 파일 복구, 작업 디렉토리에서 수정한 파일 복구
git reset HEAD readme.txt // 스테이징 영역의 수정 사항 취소 (작업 디렉토리는 여전히 수정 상태이며, 원래 파일로 복원하려면 checkout 사용)
원격 저장소 연결
git remote add origin git@server-name:path/repo-name.git
git remote -v // 원격 서버 정보 표시
git remote rm origin // 원격 연결 삭제
원격 저장소로 푸시
git push -u origin master -- 처음으로 master 브랜치의 모든 내용 푸시
git push origin master -- 최신 수정 사항 푸시
클론
$ git clone git@github.com:michaelliao/gitskills.git
브랜치
git branch // 브랜치 목록 조회
git branch <name> // 새로운 브랜치 생성
git checkout <name> // 브랜치 전환
git checkout -b <name> // 브랜치 생성 및 전환
git checkout -b dev origin/dev // 원격 브랜치를 로컬로 가져와 전환
git merge <name> // 현재 브랜치에 특정 브랜치 병합
git branch -d <name> // 브랜치 삭제
git branch -D <name> // 병합되지 않은 브랜치 강제 삭제
git branch --set-upstream-to=github/dev dev // 로컬 브랜치와 원격 브랜치 연결
작업 임시 저장
git stash // 현재 작업 공간 저장
git stash list // 저장된 작업 목록 조회
git stash apply // 특정 저장 작업 복원
git stash drop // 특정 저장 작업 삭제 (기본값: 마지막)
git stash pop // 마지막 저장 작업 복원 후 삭제
로그
git log --graph --pretty=oneline --abbrev-commit // 그래픽 형태로 로그 표시
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
태그
git tag v1.0 // 태그 생성
git tag v0.9 f52c633 // 특정 커밋에 태그 생성
git tag -a v0.1 -m "version 0.1 released" 1094adb // 특정 커밋에 주석과 함께 태그 생성
git tag // 태그 목록 조회
git show v0.1 // 태그 상세 정보 확인
git tag -d v0.1 // 로컬 태그 삭제
git push origin :refs/tags/v0.1 // 원격 태그 삭제
git push origin v1.0 // 특정 태그를 원격 저장소로 푸시
git push origin --tags // 모든 태그를 원격 저장소로 푸시
참고: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
Git 모든 기록 삭제
git checkout --orphan master_back
git branch -D master
git branch -m master
git push -f origin master
Git 원격 저장소 연결
# 원격 브랜치 origin/branch를 로컬로 가져와 newbranch 생성 및 연결
git checkout -b newbranch origin/branch
# 로컬 브랜치를 원격으로 푸시, newbranch와 origin/branch를 연결
git push --set-upstream origin newbranch:origin/branch
# 로컬 newbranch와 원격 branch 연결
git branch --set-upstream-to=origin/branch newbranch