본문 바로가기
코드프레소 체험단/실무자가 알려주는 Git

[실무자가 알려주는 Git 입문] Git 기본 플로우 이해 (3)

by 의정부핵꿀밤 2022. 1. 11.
728x90

✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨

💜 코드프레소 이러닝 강의 수강 중 - 실무자가 알려주는 Git 입문 💜

😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎

 

https://www.codepresso.kr/

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr


이전 실습에서 TestService.java 파일의 코드를 수정하고 $git status 를 통해 파일 상태까지 확인하였다

파일 수정 후 상태 확인

이제 수정한 파일을 다시 스테이징 영역에 추가하고 커밋을 생성해보자!!

 


파일 추가 수정 플로우

  1. 코드 수정
  2. 수정이 완료되면 스테이징 영역에 추가 -> $ git add
  3. 의미있는 변경이면 커밋 생성 -> $ git commit

 

  • 이번엔 인라인 커밋 메세지로 커밋을 추가해보자
$ git commit -m "Commit 2 for TestService"

 

  • 그럼 아래와 같이 커밋이 추가된다

 

 

그리고 커밋 히스토리를 확인해보면 아래와 같이 추가된 커밋을 확인할 수 있다 -> $ git log

예시 화면

 


 

[ 여기서 꿀팁!✨ ]

Git 명령어 뒤에 --help 옵션을 입력하면, 웹 브라우저를 통해 해당 명령어의 매뉴얼 페이지가 실행된다

예시로 아래의 명령어를 입력해보자!

$ git log --help

 

그러면 아래와 같이 웹 브라우저에 자동으로 연결되면서 명령어 매뉴얼 페이지가 보인다!

git log --help 매뉴얼 페이지

 


커밋 히스토리 관련 옵션

이제 $ git log 명령어의 옵션들을 살펴보자

 

1. -u

$ git log -u

해당 커밋의 내용과 함께 변경점을 보여준다

 

 

2. -u 'commit ID'

$ git log -u 'commit ID'

입력한 커밋 아이디에 해당하는 특정 커밋에 대한 변경점만 보여준다

여기서 commit ID에는 커밋의 특정 아이디(SHA-1로 만든 이상하고 긴거)를 입력하면 된다

 

 

3. - '숫자'

$ git log -'숫자'
$ git log -1
$ git log -2

옵션으로 숫자를 입력하면 최근 커밋을 기준으로 최대 몇 개까지의 최신 커밋을 보여줄지 선택할 수 있다

만약 -1 을 입력하면 최신 커밋 1개, -2를 입력하면 최신 커밋 2개를 보여준다

 

 

4. --name-only

$ git log --name-only

커밋 히스토리를 볼때 변경된 파일 목록(이름)까지 보여준다

 

git log --name-only 결과화면

--name-only 옵션을 사용하면 위처럼 커밋마다 수정된 파일들의 목록을 이름으로 보여준다

 

 

5.  --oneline

$ git log --oneline

커밋을 간결하게 한줄로만 보여준다

커밋이 많을 때 빠르고 간결하게 보기 위해 사용한다

 

--oneline 옵션

어때유 간결하게 보이쥬?

 

 

6. git show 'commit ID'

$ git show 'commit ID'

$ git log -u 'commit ID'와 같은 결과를 보여준다

 

 


커밋 되돌리기

커밋을 되돌리는 경우는 2가지가 있다

  1. 이미 커밋을 만들었는데, 커밋의 메세지를 변경하고 싶을 때
  2. 이미 커밋을 만들었는데, 커밋에 추가할 변경점이 있을 때

 

1. 커밋에 수정할 변경점이 있을 때

먼저 커밋의 메세지를 변경해보자

$ git commit --amend

 

마지막 반영한 최신 커밋 메시지를 변경하고 싶을 때 위의 명령어를 통해 수정이 가능하다

그럼 아래와 같이 최신 커밋을 수정할 수 있는 vim 에디터가 실행된다

 

여기서 주의할 점은 $ git commit --amend 를 사용하면 마지막 반영한 최신 커밋 메시지를 수정하며, 되돌린 것은 복구할 수 없다!
따라서 실습에서 "Commit 2 for TestService"를 "Commit 2-2 for TestService"로 수정했는데 이는 첫번째 커밋으로는 복구할 수 없다는 것이다!

 

 

2. 커밋에 추가할 변경점이 있을 때

  1. 파일을 수정한 후, 스테이징 영역에 추가한다
  2. $ git commit --amend 명령어로 커밋을 생성한다

 

실습을 위해서 AmendService.java 파일을 생성하고 커밋에 추가해보았다!

$ vi AmendService.java
$ git add AmendService.java
$ git commit --amend

 

아래는 결과화면!

스테이징 영역에 파일 추가 후 --amend를 하고 히스토리를 확인하면 추가된 것을 확인할 수 있다!

--amend 로 변경점 추가

 

 

 

지금까지 실습을 통해 배운 커밋 되돌리기 방법은 다음과 같다

  • 기존의 커밋을 변경해서 새로운 커밋으로 덮어쓰는 방식이다
  • 이는 한번 덮어쓰면 기존 커밋을 되돌릴 수 없다는 단점이 있다

 


그래서 이번엔 다른 방법을 배워보자!

코드프레소 짱!

  • 커밋의 히스토리를 유지하면서 내용을 롤백 시키는 방법
  • (롤백 : 반영하기 전 상태로 되돌리는 것)
  • 즉, 커밋 변경 시 덮어쓰는게 아니라 롤백이 반영된 새로운 커밋을 만드는 방법
  • 이미 커밋을 만들었는데, 커밋 히스토리를 유지하면서 내용만 롤백하는 경우 사용된다
  • 이는 히스토리 관리가 매우 중요한 실무에서 주로 사용됨

 

 

코드의 원복

Git에서 코드를 원복하려면 다음 명령어를 사용한다

$ git revert

이 때 "코드를 원복한다"는 것은?

= 반영한 특정 코드(변경점)를 제거한다

= 변경을 취소한다

= 반영한 커밋을 되돌린다

= 반영한 커밋을 revert 시킨다

...와 같은 말이다~~~

 

 

Git에서는 원복의 단위가 커밋이다

따라서 원하는 커밋으로 돌아가려면 다음과 같이 하면 된다

$ git revert 'commit ID'

 

위의 명령어를 입력하면 아래와 같이 revert 할 수 있는 편집창이 나타난다

이 때 revert 커밋은 자동으로 생성되며, 수정하고 싶으면 수정하고 저장하면 된다!

git revert

위의 화면을 보면 이전 커밋과 같이 새로 추가된 AmendService.java 파일은 삭제되고, TestService.java 파일은 수정된다고 나와있다

 

 

 

따라서 revert한 후 확인을 해보면 위의 메세지처럼 이전 커밋 상태와 동일하게 돌아간 것을 확인할 수 있다

 


 

 

정리해보면 코드의 원복은 아래와 같이 이뤄진다

위처럼 revert를 통해 다시 롤백한 상황이다!

728x90

댓글