Appia의 IT세상

[깃, Git] Git 변경사항 폐기하기(with Checkout, restore) 본문

Development/GIT

[깃, Git] Git 변경사항 폐기하기(with Checkout, restore)

Appia 2023. 12. 11. 07:58
반응형

[깃, Git] Git 변경사항 폐기하기(with Checkout, restore)

[깃, Git] Git 변경사항 폐기하기(with Checkout, restore)

 

이전 포스팅에서는 Git에서 자주 사용하는 HEAD~를 사용하는 방법에 대해서 이야기를 했었습니다. 앞선 포스팅에서 익힌 HEAD~ 부분은 git에서 매우 많은 곳에서 잘 사용이 됩니다. 그래서 이번 포스팅에서는 이 부분을 활용하는 부분중 하나로,  변경사항에 대해서 없애는 즉, 변경사항을 폐기하는 방법에 대해서에 이야기를 해보고자 합니다. 

 

[깃, Git] Git에서 HEAD~를 사용하는 방법

 

[깃, Git] Git에서 HEAD~를 사용하는 방법

[깃, Git] Git에서 HEAD~를 사용하는 방법 이전 포스팅에서, git에서 commit한 이전 내용에 대해서 확인하고, 원래대로 돌아오는 방법에 대해서 포스팅을 봤습니다.이 부분을 통해서, 이전 commit 내용을

appia.tistory.com

 

먼저, 여러 포스팅에서 사용한 예시 Repository를 활용하도록 하겠습니다. 그리고 추가로 여기에 파일을 생성하겠습니다. 

$ touch b_change.txt v_change.txt # 예제 파일 생성

예제로 사용한 repository와 파일 생성 

 

이 부분을 토대로, "git status" 명령어로 확인해보면, 현재 2개의 파일이 생성된 것을 알 수 있습니다. 이렇게 생성한 파일을 git add / commit을 하도록 하겠습니다. 

예제로 사용할 파일 commit 완료 

 

현재까지 commit을 한 파일에 약간의 파일을 수정하도록 하겠습니다. 그리고 나서, 각 파일을 저장해보도록 하겠습니다. 

예제 파일 수정

 

그리고 나서 "git status" 명령어를 통해서 현재 변경사항을 git에서 추적이 되고 있는 것을 확인할 수 있습니다. 

git status로 현재 수정 파일 확인

그리고, 여기에서 수정사항을 폐기하는 방법에 대해서 이야기를 해보도록 하겠습니다. 

$ git checkout HEAD <파일이름>

위의 명령어를 바탕으로, 예제로 생성한 b_change.txt와 v_change.txt 파일 원복하도록 하겠습니다. 

git checkout을 통한 파일 변경사항 폐기하기

그리고나서, 현재 변경사항을 폐기한 부분을 열어 보면 다음과 같이 파일을 생성해서, 바로 add/commit을 한 그 상태로 돌아갑니다. 

원복된 변경사항 확인

그리고 나서 다시 한번 git status를 통해서, 현재  branch(브랜치)의 변경사항을 보도록 하겠습니다.

git status로 변경사항 폐기 여부 확인하기

 

그러면, 이제는 restore를 통해서 변경사항을 폐기하는 방법에 대해서 보도록 하겠습니다. 여기에서 임의적으로 변경사항을 만들고 몇번의 commit을 진행해보도록 하겠습니다. 

변경사항 반영 commit

이상태에서 파일을 임의적으로 변경을 하였습니다. 

임의로변경사항 만들기

이제는 변경사항을 폐기해보도록 하겠습니다. 

$ git restore <파일이름>

이와 같이 입력을 할 경우 해당 파일에 가장 최신의 commit 기준으로 복원이 됩니다. 

git restore 로 변경사항 폐기한 결과

여기에서 2번째 또는 특정 commit 기준으로 파일을 변경하는 방법이 있습니다. 바로 다음과 같은 형태로 작성하시면 됩니다. 

$ git restore --soruce HEAD~n/Commit Hash <파일이름>

위의 명령어를 통해서 HEAD~ 를 통해서 이전 몇번째 commit 기준으로 작성하던지 아니면, commit hash를 통해서 해당 commit을 직접 지정할 수 있습니다. 그 기준으로 선택한 파일을 돌릴 수 있습니다. 

2번째 이전 commit으로 파일 변경하기

위의 예시에서 제가 2번째 이전 파일로 파일을 돌리고 나서, 다시 한번 git status를 입력하여 상태를 확인합니다. 이전 commit과 차이가 발생할 경우, 이전 commit 기준으로 수정이 되었다고 나타낼 수 있습니다. 

2번째 이전 commit으로 파일 돌릴 후, git status 결과

위의 경우에 그냥 git restore를 통해서 바로 이전commit으로 파일을 원복할 수 있습니다. 이와 같은 방식으로 git에서 파일의 변경사항에 대해서 폐기할 수 있습니다. 

 

 

이번 포스팅에서는 [깃, Git] Git 변경사항 폐기하기(with Checkout, restore)라는 주제로 포스팅을 해봤습니다. 실제, 이 부분이 매우 유용하게 사용될 수 있는 부분이라고 생각합니다. 물론, 여기에서 Ctrl+z를 이용해서 파일에서 직접 수정을 원복할 수도 있지만, 이전 commit 기준 및 다양한 시점으로 본인이 원하는 지점으로 변경사항을 되돌릴수 있습니다. 혹 궁금하신점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments