[실무에서 자주쓰는 리눅스 명령어]5. 리눅스 터미널 git 명령어 2(이전 소스코드로 돌리기)
안녕하세요 고급개발자가 꿈인 코린이 입니다.
오늘은 평소 리눅스에서 개발하시다 보면 가장 많이 사용하는 git 명령어 대해서 포스팅 하겠습니다.
지난 시간에는 기본적으로 git을 이용해서 소스코드를 올리는 내용을 했다면 이번에는 소스코드를 올리거나 할때
많이 사용하는 내용과 이전 소스코드로 돌리는 내용을 다루겠습니다.
1. 현재 디렉토리에서 서버에서 받은 내용과 다른 내용 보이기(git diff)
git diff 명령어는 서버에서 받은 내용과 받고나서 자신이 추가하거나 수정한 부분의 다른점을 보일때 사용한는 명령어
입니다.
그래서 git diff 명령어를 사용하면 어떤 파일에 어떠한 내용이 추가되었거나 없어 졌는지 알수 있습니다.
아래의 이미지를 보겠습니다.
제가 testsource1.cpp파일에 특정한 내용을 추가해 보고 git diff 명령어를 사용해 보겠습니다.
위의 이미지를 보시면 git status 했을때 어떠한 파일이 변경되었는지 볼수가 있습니다.
그리고 바로 git diff 를 사용하였더니 testsource1.cpp 파일에 add information이라는 내용이 추가가 된것을 확인할수 있습니다.
그렇기 때문에 이 명령어는 소스코드를 머지를 한후에 서버에 올리기전에 다시 한번 자신이 추가한 내용을 확인하는
명령어 입니다. 머지가 잘못되었다고 생각했을때 이러한 명령어를 많이 사용합니다.
2.이전의 소스코드로 돌리기 (git checkout [commit id])
이번에는 이전의 소스코드로 돌리는 내용을 다루어 보겠습니다.
소스코드를 구현하다보면 이전에 소스코드로 돌려서 현재 없어진 코드를 살리거나 잘못구현된 내용들을 수정하거나
할수가 있습니다. 이럴때 사용하는 것이 이 명령어 입니다. 이전 소스 코드로 돌리는 방법은 git checkout 말고도
git reset --hard 명령어도 있지만 git checkout은 더욱 안전하게 이전 소스 코드로 돌리는 방법 입니다.
더욱 안전하게라는 말이란 만약 제가 지금 수정한 내용이 있는데 git checkout 로 이전 소스로 돌릴려고 하면
git 자체에서 수정한 내용이 있기 때문에 돌리는 것을 막아줍니다. 혹시나 자신도 모르게 구현하거나 추가한 부분을
없애지 않고 에러를 발생해서 돌릴수가 없게 만드는 내용이죠 아래 이미지로 설명을 드리겠습니다.
아래의 이미지는 현재 tesetsource1.cpp 파일의 내용과 현재 git log를 보여줍니다.
터미널 상의 add information testsource1.cpp 파일에 add information이라고 추가한 내용의 로그 입니다.
그렇기 때문에 add test source 1 이라는 로그로 소스코드를 돌리면 add information이라는 내용이 파일에서 삭제가 됩니다.
삭제가 되는 내용은 아래 이미지로 보여 드리겠습니다.
위의 이미지처럼 add test source 1의 commit id 즉 c32c24da0bdbc5~~~ 이러한 아이디로 checkout 했더니
testsource1.cpp 파일에 add information이라는 텍스트가 사라졌습니다. 그리고 git log를 하였더니 현재 상태가
add test source 1이라는 commit id로 돌아 간것을 확인 할수가 있습니다.
이번에는 git checkout 을 하는데 특정한 파일을 수정하고 checkout 을 해보겠습니다.
이번에는 tesetsource1.cpp파일에 위와 같이 add information1이라는 내용을 추가했습니다.
그리고 이전 commit id 돌리는 명령어를 했더니 위와 같이 에러가 발생하였습니다.
그렇기 때문에 git checkout [commit id] 는 더욱 안전하게 이전 소스로 돌릴수 있도록 하는 내용입니다.
3.이전의 소스코드로 강제로 돌리기 (git reset --hard [commit id] )
이번에는 git checkout 과는 다르게 이전 소스코드로 강제로 돌리는 명령어를 다루어 보겠습니다.
위의 에러가 난 상태에서 git reset --hard 명령어를 사용해 보겠습니다.
위의 이미지와 같이 git checkout 했을때는 에러가 발생하였지만 git reset --hard 명령어를 사용하였더니
강제로 이전 commit id 로 변경되는것을 볼수가 있습니다.
그렇기 때문에 현재 디렉토리에서 무엇을 수정하던 무조건 이전 소스로 돌리기 위해서는 git reset --hard [commit id]를
사용하시면 됩니다.
4. checkout으로 돌린 소스를 다시 원래의 소스코드로 돌리는 명령어 (git checkout master)
이번에는 git checkout으로 이전 소스코드로 돌린 내용을 다시 원래 소스코드로 돌리는 내용을 다루어 보겠습니다.
git checkout [commit id]는 마스터 브랜치는 제일 최근 내용을 보고있고 head 브렌치만 이전 commit id로 가서
이전 소스코드로 돌리는 내용 입니다. 그렇기 때문에 마스터 브랜치와 head 브랜치의 commit id가 다르게 됩니다.
그래서 이 브랜치를 마스터 브랜치로 돌린다라는 명령어를 사용하면 원래의 소스코드로 원복을 할수가 있습니다.
아래의 이미지를 보겠습니다.
위의 이미지와 같이 git checkout 을 이용해서 이전 소스코드로 돌리고 git branch 를 이용해서 현재 브렌치를
확인합니다. 현재 브렌치가 마스터와 분리되어 있다고 나오는데 이내용은 현재의 branch가 마스터가 아닌 head를
바라보고 있고 이전 commit 를 바라보고 있기 때문입니다. 그래서 이 브렌치를 master 브렌치로 바꿔주면
원래 서버에 있던 소스코드로 돌아가게 됩니다.
여기 까지 git 명령어 중에 많이 사용하는 이전 소스코드로 돌리고 다시 원복하는 내용을 다루어 봤는데요
이러한 명령어들을 잘 활용해서 실무에서 git을 사용하실때 잘 사용할수 있도록 하셨으면 좋겠습니다.
여기 까지 읽어주셔서 감사합니다.
'리눅스 > 자주쓰는 리눅스 명령어' 카테고리의 다른 글
[실무에서 자주쓰는 리눅스 명령어]4. 리눅스 터미널 git 명령어 1 (0) | 2020.01.12 |
---|---|
[실무에서 자주쓰는 리눅스 명령어]3.vi 에디터 스왑 에러 해결(swp 파일 에러) (0) | 2019.10.09 |
[실무에서 자주쓰는 리눅스 명령어]2. 파일 삭제 및 디렉토리 삭제(rm 명령어) (0) | 2019.09.29 |
[실무에서 자주쓰는 리눅스 명령어]1. 이전 디렉토리로 이동 명령어(cd 명령어) (0) | 2019.09.22 |