[깃허브(Github)] 15. 되돌리기

Github 사용법 2016. 8. 12. 16:43

728x90
반응형

1. 바로 전의 커밋에 대한 메시지를 수정하는 방법



1. 먼저 현재 커밋들의 상태를 확인해 봤습니다.

그중에 가장 위에 있는 커밋은 index.html 이란 이름의 파일을 index2.html 로 변경해놓고 그렇게 변경이 됬다고 간단하게 메시지를 남겼습니다.

우리가 한건 이 파일의 네임을 한번 더 변경해 주려고 합니다.

index3.html 로 바꾸겠습니다.









2. mv 명령을 이용하면 파일의 이름을 바꿀 수 있습니다. http://recoveryman.tistory.com/270

이렇게 이름을 바꾸고 status 명령으로 상태값을 확인해서 제대로 변경이 됐는지 확인했습니다.

그리고 커밋을 하는데 커밋 메시지 내용을 실수로 index2.html -> index4.html 이라고 입력했습니다.









3. 이때 사용하는 명령어가 git commit --amend 입니다.

git commit --amend 명령을 사용하면 다음과 같은 스샷처럼 vim 형태의 편집기가 열립니다.

저희가 바꿔줄 커밋 메시지 내용을 확인합니다.









4. i 를 누르면 내용을 바꿀 수 있게 바뀝니다. i를 눌러주시고 index4.html 을 index3.html로 바꿔 줍니다.

그리고 나서 ESC 한번 눌러 주시면 편집할 수 있는 상태에서 빠져나옵니다.

그 상태에서 : (세미콜론) 을 눌러서 vim 편집기를 빠져나올 수 있게 wq를 입력합니다. wq는 현재 내용을 저장 후 편집기를 빠져나간다는 vim 명령입니다.

vim 편집기 명령어는 구글링 하면 많이 나옵니다만. git에서 사용하는 vim 명령은 편집할 수 있는 i, vim명령을 입력할 수 있는 : (세미콜론), 저장한 후 빠져나오기 의 wq 정도만 알아도 될꺼 같습니다.









5.이렇게 한번 빠져나왔으면 log 명령으로 커밋 메시지가 제대로 수정이 됐는지 확인해 봅니다.






========================================================================================================




2. Staging Area 에 추가한 파일을 Unstage로 변경하기



6. 이 방법은 Staging Area 와 워킹 디렉터리 사이를 넘나드는 방법입니다.

예를 들어 index3.html 과, common.js 를 수정 후 '각각 따로따로 커밋하려고 했는데'

지금 이 6-1 스샷을 잘 보시면 어떤 상태인지 확실히 파악이 되셨을 꺼라 생각합니다.


(스샷 6-1)


(스샷 6-2)







7. 실수로 git add * 라고 실행해 버렸습니다. 두 파일 모두 Staging Area에 들어 있는게 2번 스샷의 붉은 박스에서처럼 보이실 겁니다.

이 둘중 common.js만을 Staging Area에서 빼려고 합니다.








8. 사실 7번 스샷을 유심히 보시면 이런 문구가 있습니다.

(use "git reset HEAD <file>..." to unstage)

이 명령으로 common.js 를 Unstated 상태로 변경할 수 있습니다.

그리고 정말 그렇게 되는지 status로 확인해 봤습니다.

※ git reset 명령을 --hard 옵션과 함께 사용하면 워킹 디렉터리 파일까지 수정되기에 조심해야 합니다. --hard 옵션만 사용하지 않는다면 git reset 명령은 Staging Area 파일만 조작하기 때문에 위험하지 않습니다.






========================================================================================================




3. Modified 파일 되돌리기


9. 파일이 수정중 이라면 Modified 상태 입니다.
원래 common.js 는 아무런 내용이 없는 빈 파일이였는데
수정중인 파일로 만들기 위해서 아무렇게나 작성해서 저장했습니다.
이 명령의 목적은 잘 못 수정한걸 다시 원래 상태로 되돌리기 위해.. 가 맞을꺼 같습니다.
common.js는 제가 이렇게 코드를 넣었습니다. 그리고 이건 잘 못 수정한 거라서 다시 아무것도 없는 빈 공간의 파일로 되돌아 가야 합니다.







10. 그리고 git status 로 현재 test01 폴더의 파일 상태들을 확인해 봤습니다.

역시 common.js 는 수정중인 상태라고 나와 있네요.








11. 10번 스샷의 초록색 박스를 자세히 보면 이런 문구가 있습니다.

(use "git checkout -- <file>..." to discard changes in working directory)

이 문구를 실행해봤습니다. 그랬더니 수정중 이라는 Modified 표시가 완전히 사라졌습니다.

그럼 수정중이 아니였다면 어떤 상태였을까요?

9번 의 내용에 제가 이렇게 적었습니다.

"원래 common.js 는 아무런 내용이 없는 빈 파일"








12. 그럼 common.js 에는 수정했던 내용이 없어져야 맞습니다. 그래야 제대로 되돌아간 것이기 때문입니다.

에디터를 열어서 확인해 봤더니 역시 아무 내용이 없었습니다.

제대로 되돌아 간게 맞습니다.

※ git checkout -- [file] 명령은 꽤 위험한 명령이라는 것을 알아야 합니다. 원래 파일로 덮어썻기 때문에 수정한 내용은 전부 사라집니다. 수정한 내용이 진짜 마음에 들지 않을 때만 사용합니다.





반응형