본문 바로가기
프로그래밍 ( Programming )/깃허브 (GitHub)

5. Git Commit 내용 이용 및 수정하기

by Jayce_choi 2021. 11. 17.
반응형

우리는 Github에서 4번 글에서 했던 내용들의 기록들을 자신의 Repository에서 Commit 내용에서 확인할 수가 있습니다. 

자신이 작성한 코드에서 실제로 하다보면 어느 지점으로 다시 되돌아가야 하는 시점이나 상황이 발생하기 마련입니다.

때문에 그 지점이 어디인지를 보여주는게 Commit 내용인데요. 실제로 어떻게 하면 되는지를 적어보도록 하겠습니다.


먼저 이전에 했던 Repository가 이미 자신의 Working directory에 복사되어있는 상황을 가정하고 시작을 하겠습니다. 만약 폴더가 없다면 이전의 Repository나 다른 Repository를 빈 폴더에 Clone 해주세요. 

 

git pull 명령어를 통해서 원격 저장소와 현재 로컬 저장소의 내용을 동일하게 만들 수가 있는데 clone을 한 상황 (동일한 상황)이므로 밑에 사진과 같이 동일한 상태이므로 already up to date라는 글이 나오게 됩니다. 

 

이제 여기서 commit 내용을 이용하여 특정 지점으로 가도록 해보겠습니다. 

1. 먼저 clone을 수행했을 당시에 기본적으로 포함되어 있던 add_module이라는 python 파일에다가 mul 이라는 함수 하나를 추가해보았습니다. 

 

그리고 추가가 되면 동일하게 git add . 와 git commit -m ~~ 및 git push까지 하여서 원격 저장소로 보냅니다. 

 

*여기서 git log 명령어를 이용하면 commit 내용들을 github에서 뿐만아니라 명령 프롬프트 창에서 기록을 볼 수가 있습니다. (키보드에서 q 버튼을 이용하여 나올 수 있습니다)

 

2. 이제 이전의 지점으로 돌아가보도록 하겠습니다. 

git log를 수행했을때 주황색으로 보이는 글자는 해시값입니다. 즉 우리는 우리가 원하는 지점에 해당하는 해시값을 복사해서 돌아갈 예정입니다. 우선 우리가 돌아가고자 하는 시점의 해시값을 복사해봅시다. 

저는 Add add_module [add]라는 commit이 남겨진 지점으로 가려고 하니깐 c496으로 시작하는 해시값을 복사합니다.

이제 git reset 명령어와 해시값을 붙여넣어서 돌아갈 수가 있는데 git reset 명령어에는 3가지 옵션이 존재합니다. 

* git reset --hard c496~(해시값)~ (우리가 돌아가고자 하는 지점 이후의 commit들은 모두 삭제해버리는 옵션) 

* git reset --soft c496~(해시값)~ (우리가 돌아가고자 하는 지점 이후의 내용을 살려두고 해당 내용의 인덱스 또한 존재합니다. ) 

* git reset --mixed c496~(해시값)~ (역시나 이후 내용은 남아있는데 인덱스는 초기화가 되어버려서 커밋을 하기 위해 다시 변경된 내용은 추가해야 하는 상태입니다. ) 

 

그래서 저는 git reset --hard c496b7de28e5adfc1eed1caa09216f8ada9d5553 를 수행하고 git log 명령어를 실행해보면 다음과 같이 이후에 log는 모두 사라져 버린 걸 볼 수가 있습니다. 

여기서 로컬 저장소에 있는 파일을 다시 보면 다음과 같이 3개 정도의 함수가 모두 없어진것을 알 수 있습니다.  

 

그러나 아직은 원격 저장소의 내용은 변경되지 않았고 로컬에 clone된 내용만 과거 시점으로 돌아간 상태입니다.

 

3. 만약 여기서 원격 저장소의 내용까지 우리가 원하는 시점으로 돌리고 싶을 때를 알아봅시다.

단순히 git push를 수행하면 다음과 같이 오류가 나오면서 push가 안됩니다.  

 

때문에 이때는 git push -f라는 옵션을 추가해줌으로써 가능한데 f 는 force, 즉 강제로 하겠다 이런 의미가 내포되어 있습니다. 명령어를 실행하고 github에서 확인하면 commit 내용들이 모두 사라져 있고 코드 내용 또한 과거로 돌아간 것을 확인할 수 있겠습니다. 

명령 프롬프트 창
바뀐 코드 내용
git commit 수 변화
git commit log 변화

 


위에까지 가 Commit을 이용하여 우리가 원하는 지점으로 갈 수 있었던 방법에 대해 설명해보았고 이제는 Commit 내용 수정에 관련해서 적어보겠습니다. 사실 이전 글에서 Commit 내용을 잘못 기입했을 때 수정하는 방법인 amend에 대해서 잠깐 설명드린 적이 있는데 여기서 또 한 번 설명드리겠습니다. 

1. 먼저 add_module이라는 파이썬 파일에 코드를 삽입하고 git add . 명령어를 진행합니다. (저는 add2라는 함수를 제작하였습니다. 

마찬가지로 git add 후에 status 명령어를 이용하면 초록색으로 된 글자와 함께 staging area로 올라간 상태를 보여줍니다. 

 

2. 이제 git commit 명령어와 push를 통해서 원격 저장소로 보냅니다.

여기서 실수를 한점은 git commit -m "Add my_module [add2]"이 아니라 git commit -m "Add add_module [add2]" 이므로 수정이 필요합니다. (commit의 옆에 담기는 메시지는 단순히 그냥 메시지일지 몰라도 팀이 함께 작업을 할 때는 어떠한 코드가 추가된 건지, 수정된 건지를 알 수 있는 중요한 단서입니다. 때문에 반드시 정확하게 적어줘야 하기에 수정이 필요합니다) 

 

3. 잘못된 commit 메세지를 amend 명령어를 이용하여 수정해봅시다. 

git commit --amend 명령어를 입력하면 밑에 사진과 같이 나오게 됩니다.

 

여기서 수정을 해야하는데 해당 편집기는 unix 에디터라서 수정 모드와 관리자 모드로 나뉘어 있습니다. 때문에 수정 모드로 가기 위해서는 키보드에서 a 버튼을 눌러주시면 하단에 INSERT라는 글이 나오면서 수정 모드로 진입합니다. 

 

이제 수정이 필요한 부분으로 이동하여 키보드로 수정을 하고 편집기에서 저장하고 나오기 위해서는 :wq!를 입력하시면 됩니다.

다시 터미널로 나왔으면 git push -f 명령어를 통해서 원격 저장소로 보내면 완료가 됩니다. 실제 github에서 commit 리스 트롤 보면 add2라는 새로운 commit이 생긴 것을 확인하실 수가 있습니다. 

 

이번 글에서는 commit내용을 이용하여 우리가 원하는 지점으로 가능 방법과 그리고 commit 내용을 수정하는 방법 또한 알아보았습니다. 

반응형

댓글