[깃허브(Github)] 15. 되돌리기
Github 사용법 2016. 8. 12. 16:43
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 파일만 조작하기 때문에 위험하지 않습니다.
========================================================================================================
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] 명령은 꽤 위험한 명령이라는 것을 알아야 합니다. 원래 파일로 덮어썻기 때문에 수정한 내용은 전부 사라집니다. 수정한 내용이 진짜 마음에 들지 않을 때만 사용합니다.
'Github 사용법' 카테고리의 다른 글
[깃허브(Github)] 17. 태그 달기 (0) | 2016.08.16 |
---|---|
[깃허브(Github)] 16. 리모트 저장소 (0) | 2016.08.15 |
[깃허브(Github)] 14. 커밋 히스토리 조회하기 (1) | 2016.08.11 |
[깃허브(Github)] 13. 파일 이름 변경하기 (0) | 2016.08.10 |
[깃허브(Github)] 12. 파일 삭제하기 (0) | 2016.08.09 |