Git(3)

2749 단어 gitgit

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

직전 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)

좋은 웹페이지 즐겨찾기