구글 AI Gemini로 Git Commit 메세지 자동으로 생성하기

안지환·2024년 2월 21일
1

Git

목록 보기
6/6

⭐️ Overview

Chat GPT, GitHub Copilot 등 생성형 AI 도구들이 많이 우후죽순 생기고 있습니다.
Google에서 Gemini(= Bard) 정식 버전이 배포 되었습니다.

Chat GPT 가 아닌 Gemini를 선택한 이유

수많은 생성형 AI 중 Gemini를 선택한 이유는 다음과 같습니다.
첫 번째, 현재 GPT-4 보다 Gemini 1.0 Ultra가 성능상 우위를 차지고 하고 있습니다. 또한  코딩, 논리적 추론, 미묘한 지시 파악, 창의적인 협업과 같은 상당히 복잡한 작업을 훨씬 더 능숙하게 처리합니다

두 번째, Gemini는 GPT-3 무료 버전보다 토큰 수가 50배 이상 많습니다. 이는 사용할 수 있는 텍스트의 수가 제한이 없어 긴 텍스트를 생성하는데 유리합니다.

모델토큰 수제한유료 버전
Gemini1억없음10억, 100억
GPT-32천만30초당GPT-4 (유료)

변경 된 코드의 Git Commit 메세지를 작성하는데 Gemini가 다른 생성형 AI보다 유리하기 때문에 Gemini를 선택하게 되었습니다.

터미널 환경에서 수정 된 코드만 복사하기

Mac 환경 터미널에 제공하는 명령어 중 pbcopy 명령어가 있습니다.
pbcopy는 클립보드를 그대로 복사를 합니다.

Git commit 하기 전 Git Staged 단계에서 수정 된 코드만 복사하기 위해서는 아래 명령어를 입력합니다.


git diff --staged | pbcopy

Staged 상태의 코드 복사가 완료되면 다음과 같이 복사가 됩니다.

diff --git client/src/components/layout/Layout.tsx client/src/components/layout/Layout.tsx
index 1b4a469..a61ce2f 100644
--- client/src/components/layout/Layout.tsx
+++ client/src/components/layout/Layout.tsx
@@ -10,7 +10,7 @@ const Layout = ({ children }: LayoutProps) => {
       <>
         <Header />
         <main>{children}</main>
-        <Footer />
+        <Footer   />
       </>
   )
 }

Gemini 프롬프트 작성하기

프롬프트 명령어 작성 시 6가지 구성 요소가 필요합니다.

  • 지시문 : 어떤 업무를 지시해야 할지
  • 문맥 : 어떤 배경을 가지고 있는지, 내가 왜 이 질문을 하는지에 대한 이유
  • 예시 : 프롬프트의 결과를 어떤 방식으로 원하지는 제공
  • 페르소나: 가상의 인물을 만들어 인물의 관점과 언어로 답변하는 역활 과정
  • 포맷 : 어떤 형식으로 나와야 하는지 정의
  • 톤: 어떤 톤으로 나와야 하는지 정의

수정 된 코드에 GIt Commit 메세지를 작성하는 프롬프트를 작성합니다.

너는 코드 변경 사항을 Git Commit를 작성해 주는 리뷰어야. 제공된 diff 코드를 명확하고 간결하게 커밋 메시지로 요약해야 해. 커밋 제목에 대해서 명령어 스타일을 사용하고 제목은 50자 이하로 제한해야 해. 본문 길이는 제한이 없어 대신 설명적으로 본문을 작성해 줘. 모든 내용은 COMMIT_EDITMSG에 붙일 준비가 되어 있는 단일 코드 블록으로 만들어줘

코드 변경 사항에 대한 Git Commit 작성해주는 [리뷰어]로 역할을 지정합니다.
지시문은 diff(수정)한 코드에 대한 Git Commit 메세지를 간결하고 커밋 메세지로 요약하는 문장으로 작성합니다.
그리고 원하는 조건은 다음과 같이 작성합니다.

  • 제목은 50자 이하
  • 본문은 길이 제한 없음
  • 본문은 설명문으로 작성
  • 모든 내용을 COMMIT_EDITMSG 즉 커밋 메세지 템플릿으로 만들기

<예시>
프롬프트 작성 :

답변 :

그럼 수정 된 코드를 다시 프롬프트에 작성해보겠습니다.
프롬프트 작성 :

답변:

제목과 본문 형태가 출력이 되고 마지막에 COMMIT_EDITMSG도 나오는 것을 확인 할 수 있습니다.

결론

프롬프트을 동일하게 했지만 출력이 다를 수도 있기 때문에 각자의 환경과 상황에 맞게 작성하면 원하는 결과를 얻을 수 있습니다.

참고

profile
BackEnd Developer

0개의 댓글