yoongrammer

git 되돌리기 (git commit 취소, git add 취소) 본문

VCS (Version Control System)/git

git 되돌리기 (git commit 취소, git add 취소)

yoongrammer 2020. 11. 17. 22:53
728x90

목차

    git 되돌리기 (git commit 취소, git add 취소)


    작업한 내용을 되돌리는 방법에 대해서 알아보도록 하겠습니다.

     

    Git은 대부분 복구할 수 있지만 되돌린 것은 복구할 수 없으니 주의해야 합니다.

    commit 수정 하기


    git commit --amend 명령어로 커밋을 수정할 수 있습니다.

    $ git commit --amend

    이 명령어는 커밋 메시지를 잘못 적었거나 어떤 파일을 빼먹었을 때 등 커밋을 수정할 때 주로 사용합니다.

     

    커밋을 했는데 빠트린 파일이 있다면 아래와 같이 수정할 수 있습니다.

    $ git commit -m 'commit'
    $ git add file
    $ git commit --amend

    여기서 실행한 명령어 3개는 모두 커밋 한 개로 기록되며 두 번 째 커밋은 첫 번째 커밋을 덮어쓰게 됩니다.

    git add 취소하기


    git add 를 하면 파일을 Staging Area(=index)에 넣습니다.

    git reset HEAD <file> 명령어로 Staging Area에 있는 파일들을 꺼낼 수 있습니다. (git add 취소)

    $ git add file1
    $ git add file2
    $ git status
    현재 브랜치 master
    커밋할 변경 사항:
      (use "git restore --staged <file>..." to unstage)
    	새 파일:       file1
    	새 파일:       file2

    위에 file1, file2 파일이 git add 명령으로 Staging Area에 추가된 것을 확인할 수 있습니다.

    여기서 file1만 꺼내보도록 하겠습니다.

    $ git reset HEAD file1
    $ git status
    현재 브랜치 master
    커밋할 변경 사항:
      (use "git restore --staged <file>..." to unstage)
    	새 파일:       file2
    
    추적하지 않는 파일:
      (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)
    	file1

    git reset HEAD file1 명령으로 file1이 unstaged 상태로 변경된 것을 확인할 수 있습니다.

    git commit 취소하기


    git reset HEAD^ 명령어를 사용하여 최근 commit을 취소할 수 있습니다.

    $ git reset HEAD^

    위 명령은 git reset --mixed HEAD^ 와 동일합니다.

     

    git reset 명령은 아래 옵션과 함께 사용됩니다.

    • --soft : HEAD 위치만 변경, index(Staged Area)와 워킹 디렉터리는 보존합니다.
    • --mixed : index(Staged Area) 이전으로 되돌리고, 워킹 디렉터리는 보존합니다. (default)
    • --hard : index(Staged Area) ,워킹 디렉터리를 이전으로 되돌립니다.

    워킹 디렉토리 포함 모든 것을 commit 이전으로 되돌리고 싶다면 아래 명령어를 사용하면 됩니다.

    $ git reset --hard HEAD^

    --hard 옵션은 강제로 워킹 디렉터리를 덮어쓰기 때문에 되돌리는 것이 불가능하니 주의해야 합니다.

    수정된 파일 되돌리기


    git checkout -- [file] 명령을 사용하여 수정된 파일을 되돌릴 수 있습니다.

    $ git checkout -- file1

    위에는 수정된 file1 파일을 수정 전으로 되돌리는 예입니다.

    728x90

    'VCS (Version Control System) > git' 카테고리의 다른 글

    git remote 저장소  (0) 2020.11.19
    git 브랜치(branch) 란?  (0) 2020.11.18
    Git 사용방법 (init, clone, add, commit ..)  (0) 2020.11.16
    Git 설치 및 설정방법  (0) 2020.11.15
    Git 이란?  (0) 2020.11.14
    Comments