본문 바로가기

Git/Github

(Github) - git commit log 조작하기

반응형

🍳머리말

깜빡하고 어제 해야할 commit을 놓쳐 잔디를 심지 못했던 사람들을 위해 존재하는 글입니다.


📕 Repository 제작

우측 상단에 +버튼을 클릭해 new repository를 누르면 다음과 같이 새로운 repository를 생성할 수 있는 화면이 나옵니다. 여기서 적절히 test용 repository name을 적어주신 후 Add a README file을 체크해 준 후 Create repository버튼을 클릭해 생성해줍니다. 그냥 생성해버리면 empty repository를 clone할 수 없으므로 꼭 체크해주셔야 합니다.

📔 화면

클릭 후 화면은 이런식으로 구성됩니다.

이 창에서의 url을 미리 복붙해줍니다.


📕 Bash 실행

git bash를 실행해서 조작준비를 해봅니다. 

📔 순서

bash가 없다면 https://git-scm.com/ 여기서 bash를 다운로드 할 수 있습니다. bash 창에서 git clone [아까 복붙해둔 url]을 명령어로 칩니다.

 

git clone https://github.com/zmrdltl/manipultae-git-history

 

이러면 바탕화면에 자신이 설정한 repository name으로 directory가 생깁니다. bash상에서 cd [내가 설정한 repo명]으로 들어가줍니다. 그 후 이곳에서 git log를 입력해 hash값을 복붙합니다. 아래 사진의 빨간 네모에 해당합니다.

 

 

이후에 원하는 날짜 시간 등을 선택해 명령어를 입력하여 원하는 과거로 돌아갈 수 있습니다.

 

git filter-branch --env-filter \
    'if [ $GIT_COMMIT = 해시값 ]
     then
         export GIT_AUTHOR_DATE="Thu Jan 14 11:00:00 2021 +0900"
         export GIT_COMMITTER_DATE="Thu Jan 14 11:00:00 2021 +0900"
     fi'

 

2021년 1월 14일 목요일자에 commit을 할 때의 명령어입니다. 해시값과 원하는 날을 적절히 공백을 포함해서 잘 입력해줍니다. 

 

 

이런식으로 rewritten이 되었다는 메시지를 확인하고 아래 명령어를 입력합니다. 주의 할 점은 마지막 구문은 다음 부분의 빨간네모로 표시된 글자와 같아야합니다. 만약 아래에 표시된 부분이 master나 다른 글자라면 맞춰줘야합니다.

 

 

git pull --allow-unrelated-histories origin main

 

이 명령어 이후에는 다음 화면이 나옵니다.

 

 

commit message를 쓰라고 나오는데 for test 라는 line을 추가해 esc + ZZ 로 써준뒤 나옵니다. :wq도 상관없습니다. file에 write하는 명령어들을 사용해 주면 됩니다. 마지막으로 main에 push 해줍니다.

 

 

이제 제가 심은 잔디를 확인해줍니다. 다음과 같이 잘 바뀐걸 확인할 수 있습니다.

 

 

 


*repo는 지우면 심었던 잔디도 같이 삭제됩니다.