본문 바로가기
핀테크 서비스 프론트엔드 개발자 취업 완성 2기/Git

[Git] 파일 이름 바꾸기(rename) , 되돌리기(restore), 커밋 수정(revert)

by flyda 2022. 4. 2.

1. rename 

 

1-1. 먼저 잘못된 예시! 

//잘못된 방식
$ mv {존재하는 파일} {바꿀이름}

이름이 바뀐 파일이 새로운 파일로 추적되는 모습

git이 이름을 변경한 파일을 추적할 수 없다. 이를 되돌리기 위해서는 다시 원래 이름으로 mv를 해준다. 

되돌리는 방법
되돌리는 방법

 

1-2. 올바른 rename 방법 

//올바른 rename 방법
$ git mv {존재하는 파일} {바꿀이름}

 

 

2. undoing (되돌리기) 

이 기능은 많이 쓸 예졍!!! 원래 상태로 되돌리기 어려울 때 쓰면 좋을 명령어이다. 

단계별로 되돌리는 작업 

$ vi {파일이름}

i로 아무렇게나 편집을 한다 어자피 되돌릴 것임!! ㅋㅋ 그 다음 :wq를 해서 저장을 하고 닫는다 

$ git status

예전의 깃 같은 경우에는 `checkout --` 이었지만 요즘에는 `restore`로 해야한다. 

$ git restore {파일이름}

$ git restore .  // 모든 수정사항을 취소하고 싶을 때! 모두 최신의 커밋 상태로 돌아가라!

이는 모두 최신의 커밋 상태로 돌아가라는 명령어이다. ctrl + C는 shell명령어!! git restore은 git 명령어.

restore은 그냥 되돌리는거(거이 복구에 가까움) =  undo

git 작동원리

`$ git add`는 statge에 올린다! reset은 stage에서 내린다(unstaging)고 표현한다!! 하지만 reset은 금단의 명령어라고 하시면서 되도록 쓰지 말라고 하셨다!! 자신의 로컬 저장소에서 `reset`을 통해서 파일을 삭제하더라도 다른 사람이 그 변경사항을 계속 가지고 있을 경우 좀비처럼 살아날 수 있다고 한다. 

//비추천
$ vi {파일} //파일을 수정하고 

$ git add {파일}// git add까지만 해준다 

$ git reset HEAD {파일이름}

이렇게 하면 stage에서 내릴 수 있다.. ㅋㅋ

하지만 reset은 금단의 단어라고 하는 이유는 commit한 내역을 다 삭제할 수 있어서 조심해서 사용해야한다!! 

 

 

3. commit 수정하기

 

3-1.바로 직전의 commit이라면!! 

$ git commit // commit 메시지에 오류가 있다면

이후에 잘못 작성한 것을 알았다면 `--amend ` flag를 통해서 직전의 커밋 메시지를 수정할 수 있다.

$ git commit --amend

git rebase로 커밋메시지를 수정할수 있지만 정확한 문서화를 위해서 한번할때 정확하게 하자...!!

 

3-2. 이전의 commit을 수정해야하는 경우

커밋을 취소하는 방법과 커밋을 되돌리는 방법은 사용하면 팀작업시에는 reset의 경우에는 혼란을 초례할 수 있어서 조심해야한다... 

그래서 취소하는 것보다는 `revert`를 쓰자!!

//revert 

$ touch a.md

$ git add a.md

$ git commit 

$ touch b.md

$ git  add b.md

$ git commit 

$ touch c.md

$ git add c.md

$ git commit

 

a, b, c 다 없애고 수정할 예정이다!! 

$ git revert --no-commit HEAD~3..

그러면 사람들도 pull 받으면 같이 다 사라짐!! 그리고 잘못했던 것도 이력이 남는다!! 

$ git commit

그러면 미리 commit 메시지가 있다.. 내용에 왜 지우는지 이유를 적어두면 된다. 

 

참고

  • 로그 수정 사항을 쉽게 보기위해서 git alias 설정을 하기!! 
// 추천 git alias
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"

// 사용방법 
$ git lg

출처 : https://gist.github.com/johanmeiring/3002458

reset과 revert의 차이를 잘 알고 써야한다!! ㅎㅎ reset은 내컴터에서만 지우는거니까 pull 받으면 계속 살아난다. revert를 통해서 모두 삭제하도록 요청하고 수정 이력도 남기는 편이 좋다!! 

 

  • 터미널을 꾸미기 

https://ulgoon.github.io/2019/08/my-dev-env/

댓글