Git(3)
Git Commands
Rename
- mv (변경전이름) (변경후이름) : mv 명령어로 파일의 이름을 변경하면 git은 파일이 삭제된 다음 새로운 파일이 생성되었다고 인식한다.
- git mv (변경전이름) (변경후이름) : mv 명령어 앞에 git을 붙여주면 파일의 이름이 바뀌었다고 인식한다. 파일의 history를 남기기 위해서는 mv가 아닌 git mv 명령어를 사용해야 한다.
- 파일 이름만 변경한 것이기 때문에 git add 명령어 없이 git commit 명령어만 입력해주면 된다.
Undo
- git restore (파일이름) : Working Directory에서 작업한 것들을 최신 커밋 상태로 되돌린다.
- git checkout -- . or git checkout -- (파일이름) : 최신 git 버전에서는 checkout 보다는 restore을 쓰기를 권장한다. 기능은 같다.
- git restore . : 작업한 것들을 모두 최신 커밋 상태로 되돌린다.
Unstaging
- git restore --staged (파일이름) : Staging Area에 올라간 Blob을 Working Directory로 내린다.
- git reset HEAD (파일이름) : HEAD는 최신 커밋 상태를 의미한다.
- reset 명령어에 flag(hard)를 추가해 사용하면 커밋이 사라지기 때문에 주의해서 사용해야한다.
- git rm -f (파일이름) : Unstaging 하고 파일을 삭제한다.
Edit Commit
- git commit --amend : 최신 커밋 메시지를 수정할 수 있다.
Reset VS Revert
커밋을 잘 못하여 되돌릴 때
Reset
- 파일 이름만 변경한 것이기 때문에 git add 명령어 없이 git commit 명령어만 입력해주면 된다.
- git checkout -- . or git checkout -- (파일이름) : 최신 git 버전에서는 checkout 보다는 restore을 쓰기를 권장한다. 기능은 같다.
- git restore . : 작업한 것들을 모두 최신 커밋 상태로 되돌린다.
- git reset HEAD (파일이름) : HEAD는 최신 커밋 상태를 의미한다.
- reset 명령어에 flag(hard)를 추가해 사용하면 커밋이 사라지기 때문에 주의해서 사용해야한다.
- reset 명령어에 flag(hard)를 추가해 사용하면 커밋이 사라지기 때문에 주의해서 사용해야한다.
직전 3개의 commit을 삭제한 후, remote에 강제로 push
git reset --hard HEAD~3
git push -f origin (branch name)
- 협업 시 다른 cloned repo에 존재하던 commit log로 인해 파일이 되살아나거나, 과거 이력이 깔끔히 사라져 commit log 추적이 힘들어진다.
Revert
- git revert --no-commit HEAD~3.. : HEAD를 포함해서 3개의 커밋 전으로 돌아가겠다는 명령어이다. 되돌아가도 git log에는 커밋메시지가 남아있다.
- 되돌아간 다음 git commit을 입력하여 되돌아갔다는 커밋을 남긴다.
- --no-commit을 입력 안해주면 되돌아가는 횟수 만큼 커밋메시지를 남긴다.
현재 HEAD를 포함해서 3개의 commit을 순서대로 거슬러 올라가 해당 내역에 대해 commit, push 수행
git revert --no-commit HEAD~3..
git commit
git push origin (branch name)
- 잘못하기 전 과거로 돌아가 최신을 유지하면서 되돌렸다는 이력을 commit으로 남겨 모든 팀원이 이 사항을 공유하고 주지시킬 수 있다.
- commit을 따로 안할때는 git revert --no-edit HEAD~3..
- merge commit을 되돌릴 때는 **git revert -m 1 (merge commit hash)
Author And Source
이 문제에 관하여(Git(3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zz1996zz/Git3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)