일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- nginx 한글 깨짐
- basic toast
- 에뮬레이터 에러
- git commit 해쉬
- aws 리전 변경
- 안드로이드 스튜디오 에러
- E212: Can't open file for writing
- ppk to pem
- BuildConfig
- kotlin plugin
- 이클립스 코틀린
- git 저장소
- gitemoji
- nextInt()
- git
- AWS
- doze mode
- 도즈모드
- error while loading state for instance 0x0 of device 'goldfish_pipe
- git 안드로이드 스튜디오 연동
- utf8 인코딩
- Android
- 자바
- 안드로이드
- access modifier
- aws 느림
- 탄력적 ip
- toastmessage
- 코틀린 플러그인
- was server
- Today
- Total
리얼라이져의 마케팅, 개발, 창업 블로그
git 공부 (5)탄 본문
git 공부 (1)탄 에서는 git 소프트웨어 설치에 대해서 정리했다.
git 공부 (2)탄 에서는 git에 대해서 간략하게 정리해보았다.
git 공부 (3)탄 에서는 git 저장소 만들기를 정리했다.
git 공부 (4)탄 에서는 파일을 만들어 commit 까지 해보는 과정을 간단히 해보았다.
이번에는 git 파일을 각 단계(스테이지, 저장소, 작업트리)에서
수정전 사항으로 돌아가는 방법을 정리해 보도록 하겠다.
이전 git 공부 (4)탄 에서 다뤄 본 바에 따르면, 문서 버전 관리는
다음과 같은 순서로 진행된다.
작업트리 에서 파일 수정 -> 스테이지에 수정한 파일 올리기 -> 스테이지에 있는 대기 파일 저장소(repository)로 commit
이중에서 맨처음 단계인 작업트리에서 파일 수정 후 다시 되돌려보는 방법을
먼저 알아 보겟다.
1. 스테이징 전 작업 트리에서 수정 파일 되돌리기
우선 git status 를 쳐보니 스테이지에 commit 할께 없고
작업트리도 수정 사항 없이 깨긋한 상태이다.
그리고 cat 명령어를 사용해서 hello.txt 의 내용을 보니,
'첫번째 hello.txt 파일입니다.'라는 내용이 들어있다.
그럼 이제 작업 트리에서 위 hello.txt를 수정해보겠다.
필자는 vim 을 사용하여 수정했다.
수정한 내용은 '두번째 수정 한 hello.txt 파일입니다' 이다.
이 상태로 git status 를 보면, 아래와 같이 나온다.
changes not staged for commit -> 수정된 파일이 아직 스테이지로 안올라감을 의미한다.
그리고 git 공부 (4)탄 에서는 modified 부분이 untracked로 나왔었는데,
지금 modified로 바뀐것을 볼수있다.
이미 git 공부 (4)탄에서 해당 hello.txt파일을 버전 관리를 한적이 있기 때문에,
더이상 untracked가 아닌 tracked 파일이 된것이다.
그래서 tracked 파일의 경우 작업트리에서 수정하면, modifed(수정된)으로 뜨게 된다.
그렇다면 여기서 다시 수정전으로 돌리려면 어떻게 할까??
git checkout '파일 이름' 을 써주면된다.
위 명령어를 적용해보겠다.
적용하니,
git status에서 작업트리는 다시 깨끗해 졌음이 보인다.
그리고 cat 명령어로 다시 hello.txt 내용을 확인해보니, 수정전 내용 으로 다시 돌아 간것을 볼수 있다.
2. 스테이지 까지 올린 파일 다시 되돌리기.
다시 hello.txt 파일을 vim 에디터로 수정했다.
수정한 내용은 두번째 hello.txt 파일입니다. 이다.
git add 명령어를 사용해서 hello.txt 를 스테이지 영역으로 보냈다.
git satus를 보면, changes to be committed -> 스테이지로 넘어가 commit 대기중인 상태임을
볼수 있다.
이제 스테이징된 상태를 되돌려 보겠다.
'git reset HEAD 파일이름'을 넣게 되면, 다시 수정후 작업트리에만 있던 상태로 돌아갈수 있다.
git status 를 다시 확인해보니, hello.txt 파일의 상태가 changes not staged for commit으로
상태가 바뀐것을 확인 할수 있다.
그리고 cat 명령어로 hello.txt를 보았을때 수정 후 내용인것으로 보아,
'git reset HEAD 파일이름'은 스테이징 바로 전 단계로만 돌아갔음을 알수 있다.
3. commit한 파일 다시 되돌리기.
다시 작업트리로 돌아왔기 때문에, git commit -am "두번째 수정" 명령어를 통해
스테이징 부터 커밋까지 한번에 하겠다.
<git commit -am '메세지' -> git add 와 git commit을 동시에 할수 있는 명령어>
git commit -am '메세지'를 한뒤, git status 를 보면.
nothing to commit, working tree clean 커밋할께 더이상 없다는 것이 보인다.
git log 글 보면 '두번째 수정'이란 메세지의 commit이 보이게 된다.
이제부터는 최신버전 commit을 다시 되돌리는 방법을 알아보겠다.
명령어는 아래와 같이 있다.
<최신 버전의 commit을 되돌리는 법이다.>
1. git reset --Soft HEAD^ => 스테이징까지 되돌려지지 않고 commit 전까지만 되돌려짐
2. git reset --mixed HEAD^ => git reset HEAD^ 를 했을때 랑
똑같이 기본 옵셥으로 작용됨 -> 커밋 되돌리기 + 스테이징 되돌 리기가 가능함.
3. git reset --hard HEAD^ => 스테이징 커밋 되돌리기 뿐만 아니라, 작업트리 수정까지 되돌림
나는 git reset --mixed HEAD^를 이용해서 커밋과 스테이징 모두 되돌려 보겠다.
< git reset --mixed HEAD^는 디폴트여서 git reset HEAD^로 써도 똑같이 작용한다. >
< 최근 커밋이 아닌 특정 커밋으로 돌아갈때는 git reset --mixed 'commit 해쉬값'을 붙여 주면 된다. >
commit 해쉬값은 git log 명령어 입력시 각 버전 commit 옆 해쉬값들이다.
한번 특정 commit으로 돌아가는 것을 진행해보겠다.
git log를 보면, 두번째 수정 버전 까지 commit이 된것을 볼수 있다.
이제 git reset --hard 뒤에 첫번쨰 커밋 버전 commit 해쉬 값을 넣어줬다.
이렇게 되면 해당 commit 버전이 최신 버전이 되고 그 이상 commit 들은 삭제된다.
거기에다 --hard를 사용했으니 수정된 작업 트리까지 다시 원래대로 바뀐 것을 볼수 있다.
3. git reset --hard HEAD^ => 스테이징 커밋 되돌리기 뿐만 아니라, 작업트리 수정까지 되돌림
git reset 은 위에서 실행한것과 같이 최소 해당되는 commit을 삭제하고 진행된다.
하지만, 해당 commit을 삭제하지않고 보류하고 다시 돌아가고 싶을때도 있다.
이렇때는 git revert를 사용하면 된다.
우선, 다시 hello.txt를 수정한다음에 두번째 수정 파일이라는 메세지로 commit을 하였다.
이제 git revert 로 '두번째 수정 파일' 이 삭제 되지 않고, '첫번째 수정 파일입니다.'으로
돌아오는걸 실행해보겠다.
git revert 뒤에 -> 보류시킬 commit의 commit 해쉬값을 입력하면,
위와 같이 Revert "보류시킬 commit 메세지" 라는 문구와 함께
해당 commit이 삭제되지 않고 그전 commit으로 돌아가진걸 볼수 있다.
<주의 할점은 reset에서는 돌아가려는 commit의 해쉬값이 었다면, revert는 보류시킬 commit의 해쉬값을 적어 주어야 한다. - 어디로 돌아가겠다가 아니라 이걸 되돌린다! 이다.>
cat hello.txt를 해보면, 첫번째 커밋 내용으로 돌아간것이 확인된다!!
끝~
<git관련 공부 내용은 -Do it - 깃&깃허브 입문 책을 기반으로 공부하여 작성하였습니다.>
개발자가 되기 위해 공부 중인 비전공자 학생입니다.
아직 부족하여, 부족하거나 틀린 내용이 있을수 있으니,
그부분에 대해서 생각을 댓글로 공유해주시면
감사하겠습니다.^^
'IT > 문서관리' 카테고리의 다른 글
GitEmoji 사용하기 (0) | 2023.09.10 |
---|---|
git 공부 (4)탄 (0) | 2020.02.09 |
git 공부 (3)탄 (0) | 2020.02.01 |
git 공부 (2)탄 (0) | 2020.01.30 |
git 공부 (1)탄 (0) | 2020.01.01 |