mv [파일1] [파일2]
: 파일1에서 파일2로 제목 변경
- git에서는 파일1이 삭제되고 파일2가 생겼다고 판단, commit할 때 살짝 복잡해진다.
git mv [파일1] [파일2]
: 파일1에서 파일2로 제목 변경, git에서도 rename 임을 알고 있게 된다.git restore [파일 이름]
: 특정 파일 HEAD(최신 상태) 커밋으로 복구한다. (add 하기 전 수정했을 때)git restore --staged [파일 이름]
: 특정 파일을 Staging Area에서 다시 Unstaging 시킨다. (add 했을 때 add 하기 전으로 되돌리기 )git reset HEAD [파일이름]
: 위와 같은 Unstaging 하는 명령어이다.git restore --source HEAD [파일 이름]
: HEAD(최신 상태) 커밋 상태로 되돌린다.git restore --source [commit hash] [파일 이름]
: commit hash 의 특정 커밋으로 복구할 수 있다.
- commit hash :
git log
를 보면 커밋 기록을 볼 수 있는데 commit 뒤에 해쉬 7자리를 적으면 된다.
git commit --amend
: 바로 직전에 커밋했던 내용 수정한다.
git rebase -i HEAD~3
: 직전 3개의 해쉬값과 커밋이 뜬다.- vim 창에서 수정할 3번째 부분 pick » edit 으로 바꾸기
git commit --amend
: 입력하고 커밋 내용 수정git rebase --continue
: git rebase 커밋 변경 완료
git rebase --abort
: 중간에 rebase 작업 중지
git reset --hard HEAD~3(or commit hash)
: 직전의 3번째 커밋까지 삭제, 어느 시점의 commit hash를 적으면 그 시점 이후의 커밋 내용은 모두 삭제된다.git reset --mixed [commit hash]
: commit hash 전 이력은 모두 사라지게 되지만 문서의 변경 내용은 unstaging 상태로 남아있게 된다.git reset --soft [commit hash]
: commit hash 전 이력은 모두 사라지게 되지만 문서의 변경 내용은 staging 상태로 남아있게 된다.git revert [commit hash]
: 커밋해쉬에 해당하는 커밋의 내용이 삭제되며 commit log에 “Revert commit” 이 남게 된다.git revert --no-commit [commit hash]
: 커밋 해쉬에 해당하는 커밋의 내용이 staging 상태로 유지되게 된다. (add까지 마친 상태, 새로 커밋하면 된다.)gir revert [commit hash1] [commit hash2]
: 여러 개의 커밋 해쉬 내용이 삭제되고 “Revert 1번 commit”, “Revert 2번 commit” 역시 commit log에 남게 된다.git switch [branch 이름]
: 두 방법 모두 병합될 브랜치에서 명령문 실행
git merge main
: 현재 A 브랜치에서 main 브랜치의 내용과 비교하여 병합하는 방법, 그 과정에서 conflct가 발생하기도 하여 사용자가 직접 수정해야 한다.git rebase main
: 베이스부터 현재 A 브랜치의 커밋 진행 부분을 일시적으로 다른 곳(patch)에 저장하고, HEAD(최신상태) main 브랜치와 저장되어졌던 A 브랜치의 커밋들을 하나씩 병합하여 새로운 커밋을 생성한다.
- conflct가 없을 때
git switch A
: A 브랜치로 이동git rebase main
: main 브랜치 rebasegit switch main
,git merge A
: A 브랜치 안에 main이 포함되어 있으니 A가 더 큰 브랜치가 되므로 main 브랜치도 merge를 통해 똑같이 만들어준다.- conflict가 있을 때
git switch A
: A 브랜치로 이동git rebase main
: main 브랜치 rebase- conflict 발생
- 해당 파일을 열어 conflict 해결, staging (git add [파일 이름])
git rebase --continue
: 다음 과정 진행, merge된 파일과 새로운 commit patch의 merge 과정에서 conflict가 일어나는지 봐야한다.- 3, 4, 5번 반복 후 마무리!
git log --decorate --all --graph --oneline
: 쉘에서 시각적으로 브랜치 모양을 볼 수 있는 명령어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 lg
로 요약된 git log를 볼 수 있는 설정 명령어Reference: