> 웹 프론트엔드 > JS 튜토리얼 > GenAI Git 커밋

GenAI Git 커밋

WBOY
풀어 주다: 2024-08-28 06:08:33
원래의
984명이 탐색했습니다.

GenAI Git Commits

git 커밋 메시지 생성은 개발자를 위한 고전적인 GenAI 애플리케이션으로 빠르게 자리 잡았습니다.

이를 돕기 위해 GenAIScript 스크립트를 작성하겠습니다.

스크립트는 일반 node.js 자동화 스크립트 역할을 하며 runPrompt를 사용합니다
LLM에 전화를 걸어 사용자에게 생성된 텍스트를 확인하도록 요청합니다.

? 스크립트 설명

스크립트는 @inquirer/prompts에서 필요한 기능을 가져오는 것으로 시작됩니다.

import { select, input, confirm } from "@inquirer/prompts"
로그인 후 복사

이러한 기능은 사용자와 상호 작용하여 작업 확인이나 데이터 입력을 요청하는 데 사용됩니다.

다음으로 Git 저장소에 단계적 변경 사항이 있는지 확인합니다.

let { stdout } = await host.exec("git", ["diff", "--cached"])
로그인 후 복사

변경사항이 스테이징되지 않은 경우 사용자에게 모든 변경사항을 스테이징할 것인지 묻습니다. 사용자가 확인하면 모든 변경 사항이 준비됩니다. 그렇지 않으면 구제금융을 받게 됩니다.

    const stage = await confirm({
        message: "No staged changes. Stage all changes?",
        default: true,
    })
    if (stage) {
        await host.exec("git", ["add", "."])
        stdout = (await host.exec("git", ["diff", "--cached"])).stdout
    }
    if (!stdout) cancel("no staged changes")
로그인 후 복사

단계적 변경을 사용하여 초기 커밋 메시지를 생성합니다.

message = (
    await runPrompt(
        (_) => {
            _.def("GIT_DIFF", stdout, { maxTokens: 20000 })
            _.$`GIT_DIFF is a diff of all staged changes, coming from the command:
\`\`\`
git diff --cached
\`\`\`
Please generate a concise, one-line commit message for these changes.
- do NOT add quotes`
        },
        { cache: false, temperature: 0.8 }
    )
).text
로그인 후 복사

위의 프롬프트 구성은 메시지가 간결해야 함을 나타냅니다.
"git diff --cached" 출력과 관련되며 따옴표를 포함해서는 안 됩니다.

사용자는 생성된 메시지를 처리하는 방법을 선택합니다.

    choice = await select({
        message,
        choices: [
            { name: "commit", value: "commit", description: "accept message and commit" },
            ...
        ],
    })
로그인 후 복사

메시지를 편집하거나 다시 생성할 수 있는 옵션이 제공됩니다. 사용자가 메시지 편집을 선택하면 새 메시지를 입력하도록 요청합니다.

    if (choice === "edit") {
        message = await input({
            message: "Edit commit message",
            required: true,
        })
        choice = "commit"
    }
로그인 후 복사

사용자가 메시지 커밋을 선택하면 변경 사항이 커밋됩니다.

    if (choice === "commit" && message) {
        console.log((await host.exec("git", ["commit", "-m", message])).stdout)
    }
로그인 후 복사

? 스크립트 실행

CLI를 사용하여 이 스크립트를 실행할 수 있습니다.

genaiscript run gcm
로그인 후 복사

@inquirer/prompts 패키지를 사용하므로 먼저 이 패키지를 설치해야 합니다.

npm install --save-dev @inquirer/prompts
로그인 후 복사

npx를 사용하신다면

npx -p @inquirer/prompts genaiscript -p genaiscript  -- genaiscript run gcm
로그인 후 복사

이 명령은 스크립트를 실행하고 AI를 사용하여 Git 메시지를 생성하고 커밋하는 과정을 안내하여 커밋을 더욱 유익하고 일관되게 만듭니다.

이 명령을 gcm.sh 파일이나 package.json의 패키지 스크립트 섹션에 래핑할 수 있습니다.

{
    "devDependencies": {
        "@inquirer/prompts": "...",
        "genaiscript": "..."
    },
    "scripts": {
        "gcm": "genaiscript run gcm"
    }
}
로그인 후 복사

그런 다음 다음을 사용하여 스크립트를 실행할 수 있습니다.

npm run gcm
로그인 후 복사

감사의 말

이 스크립트는 Karpathy의 커밋 메시지 생성기에서 영감을 받았습니다.

위 내용은 GenAI Git 커밋의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿