환경 설정 확인
git config -l
git config --global -l
환경 설정 수정
git config --global --edit
사용자명 / 이메일 설정하기
git config --global user.name "USER NAME"
git config --global user.email "USER EMAIL"
git init
git init [PROJECT_NAME]
: 저장소를 생성하고 이름을 정함
- .gitignore 파일에 제외할 파일이나 경로를 지정
*.log build/ temp-*
원격(remote) 저장소(repository) 조회
git remote
원격(remote) 저장소(repository) 주소(url)조회
git remote -v
원격 저장소에 origin 이라는 명칭으로 github 의 repository 가 정의됨
git remote add origin https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
원격 저장소 origin 의 구체적인 정보를 확인
git remote show origin
remote repository 를 복사해오기
$ git clone [복사해올 저장소의 url]
ex) git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
# HTTPS 형식
https://github.com/[GitHub 사용자 이름]/[저장소 이름].git
# SSH 형식
git@github.com:[GitHub 사용자 이름]/[저장소 이름].git
변경된 전체 파일 추가
git add .
변경된 1개 파일 추가
git add [파일명]
경로 내의 변경된 파일 추가
git add [파일명/디렉토리 경로]
커밋할 수 있는 새로운 파일과 수정된 파일의 목록을 보여줌
git status
수정하였으나 아직 stage 하지 않은 파일의 변경점을 보여줌
git diff
두 브랜치의 차이점을 비교
git diff [first-branch]...[second-branch]
editor 로 commit message 작성
git commit
command line 으로 commit message 작성
git commit -m "COMMIT-MESSAGE"
add 하고 commit 을 동시에 한다
git commit -a -m "COMMIT-MESSAGE"
git commit --amend
i : 입력시작 (명령어 입력 모드에서 텍스트 입력 모드로 전환)
ESC : 입력종료 (텍스트 입력 모드에서 명령어 입력 모드로 전환)
:q : 저장 안하고 종료
:q! : 저장 안하고 강제 종료
:wq : 저장하고 종료
k : 위로 스크롤 (git log 등에서 내역이 길 때 사용)
j : 아래로 스크롤 (git log 등에서 내역이 길 때 사용)
commit history 를 본다
git log
간단히 커멧 해시와 제목만 보고 싶을 때
git log --oneline
commit의 변경 내용까지 확인
git log -p
특정 파일의 변경 기록을 보여줍니다(파일명 변경 포함)
git log --follow [file]
- 브랜치가 어떤 커밋을 가리키고 있는지 확인 가능함
git log --oneline --decorate --graph --all
--all : 모든 브랜치, all을 쓰지 않으면 현재 브랜치만 보여줌
--decorate : 각 브랜치가 어떻게 위치해 있는지(어떤 커밋을 가르키고 있는지)
commit된 파일상태와 현재 수정중인 상태 비교
git diff
commit된 파일상태와 add된 파일 상태 비교
git diff --staged
commit간의 상태 비교하기 - commit hash 이용
git diff [비교할commit해쉬1] [비교할commit해쉬2]
ex ) git diff 048171 0c747d
commit간의 상태 비교하기 - HEAD 이용
ex) git diff HEAD HEAD^
가장 최근의 커밋과 그 전의 커밋을 비교한다
branch간의 상태 비교하기 - HEAD 이용
git diff [비교할branch1] [비교할branch2]
ex ) git diff feature/test origin/main
local의 feature/test브런치와 remote의 main branch 비교
워킹 디렉토리에 있는 파일을 제거하고 삭제한 내역을 stage함
git rm [파일명]
로컬 파일은 그대로 원격저장소에만 해당 파일 삭제
git rm --cached [파일명]
파일명을 변경하고 해당 내역을 stage함
git mv [기존파일 명] [새로운 파일 명]
reset : 협업 X
revert : 협업 O
reset : 원하는 commit 으로 원복 뒤 이후 내역을 지움
git reset --hard [돌아갈 커밋 해시]
reset 가장 최근 commit 으로 원복
git reset --hard
commit 삭제 복구!!!
git reflog
명령어로 삭제된 commit id 확인 후git reset --hard [커밋해시id]
revert : 원하는 commit 으로 원복 지금까지 commit 을 그대로 남김
git revert [돌아갈 커밋 해시]
commit 안하고 revert 하기
git revert --no-commit
revert 진행과정시 충돌발생시 직접 conflict를 수정 후
git revert --continue # 진행하거나
git revert --abort # 취소할 수 있다.
브랜치 생성
git branch [브랜치명]
브랜치 목록 확인
git branch
브랜치로 이동
git swich [브랜치명]
브랜치 생성과 동시에 이동
git switch -c [브랜치명]
브랜치 삭제
git branch -d [삭제할 브랜치명]
브랜치 강제삭제
(다른 브랜치로 가져오지 않은 내용이 있는 브랜치를 지울 때는 -d 대신 -D(대분자)로 강제 삭제해야 함)
git branch -D [강제삭제할 브랜치명]
branch 삭제 복구!!!
git reflog
또는git reflog | grep [브랜치명]
으로 log확인git checkout -b [삭제한 브랜치명] [커밋해시id]
브랜치 이름 변경
git branch -m [기존 브랜치명] [새 브랜치명]
모든 브랜치 그래프로 조회
git --all --decorate --oneline --graph
현재(main) 브랜치에 특정 브랜치의 history 병합
git merge [BRANCH-NAME]
: 병합 전 history 남음
현재(특정) 브랜치를 main 브랜치에 history 병합
git rebase main
: 병합 전 history 안남음
병합된 브랜치 리스트 조회
git branch -a --merged
브랜치 병합을 원복(합치기중 충돌시 중단)
merge : git merge --abort
rebase : git rebase --abort
원격 저장소로부터 모든 기록을 받아옴
git fetch [remote]
원격 브랜치를 현재 사용 중인 로컬 브랜치와 병합
git merge [remote]/[branch]
모든 로컬 브랜치의 변경점을 GitHub에 업로드
git push -u [REMOTE-NAME] [BRANCH-NAME]
북마크된 원격 브랜치의 기록을 다운로드하여 변경점을 병합
git pull