Automate the Git commit and push process by intelligently analyzing file changes, generating semantic commit messages with file paths, and providing an interactive command execution workflow. The workflow opens a new terminal, checks Git status, analyzes changes to create descriptive commit messages, lists commands for user review, and executes Git operations step by step with user confirmation.
Git Commit and Push Process - Detailed Sequence of Steps
1. Open New Terminal and Check Git Status
Use the execute_command tool to open a new terminal session.
Use the execute_command tool to execute git status to check current repository state.
- Identify modified files
- Identify new (untracked) files
- Identify deleted files
- Display current branch information
Analyze the output to understand the scope of changes in the current working directory. you should ignore dev.ts file.
2. Analyze File Changes and Generate Commit Message
For each changed file identified in git status:
- Use the
read_file tool to examine the content of modified files if needed for context , you should use 'git diff' command to check the file modification detail ,not simplely read all the file contents, focus on the diff which is really important !
- Analyze the type of changes (new features, bug fixes, documentation, refactoring, etc.)
Based on the file changes and any user-provided context information:
- Generate a semantic commit message following conventional commit format
- Include the file paths of changed files in the commit message
- Examples:
feat: add new workflow creation process in .clinerules/workflows/create-new-workflow.md
fix: resolve authentication issue in src/API/security/userActions.ts
docs: update README.md with installation instructions
Ensure the commit message is descriptive and includes relevant file paths for clarity.
Ensure the commit message contains modified files which are changed or new added files . the commit message should be in Chinese . the files list locates below the commit message and contribute to the commit messsage. Examplse :
`feat: 实现曝光模式切换功能并集成设备API下发
- 在 APRActions.ts 中导出 setExposureModeFromAction API
- 在 aprSlice.ts 中添加 setExposureModeThunk 异步thunk和状态处理
- 在 ParaSettingCoordinator 中实现 setExposureMode 方法和MQTT事件监听
- 在 mqttServiceForDevice.ts 中添加NEW_EXPOSURE_MODE事件触发
- 更新三个UI组件使用受控组件模式,确保只在设备确认后才更新显示
- 利用React受控组件特性实现优雅的API-first更新流程
改动文件:
- src/API/exam/APRActions.ts
- src/states/exam/aprSlice.ts
- src/domain/exam/paraSettingCoordinator.ts
- src/domain/mqttServiceForDevice.ts
- src/pages/exam/ContentAreaLarge.tsx
- src/pages/exam/ContentAreaMedium.tsx
- src/pages/exam/ContentAreaSmall.tsx
`
3. Present Command List for User Review
- Show the generated commit message prominently so the user can verify its accuracy.
4. Interactive Command Execution Confirmation
Use the ask_followup_question tool to ask the user for confirmation with clickable options:
- Question: "是否要开始执行Git命令?"
- Options: ["开始执行命令", "修改提交信息", "取消操作"]
Handle user response:
- If "开始执行命令": Proceed to step 5
- If "修改提交信息": Ask user for new commit message and update commands
- If "取消操作": Stop the workflow
5. Execute Git Commands Step by Step
Execute git add .
- Use the
execute_command tool to run git add .
- Display the result and confirm success
- Wait for command completion before proceeding
Execute git commit
- Use the
execute_command tool to run git commit -m "final commit message"
- Use the standard git commit command (ignore any git aliases)
- Display the commit result including commit hash
- Confirm the commit was successful
Execute git push
- Use the
execute_command tool to run git push
- Display the push result
- Confirm files were successfully pushed to remote repository
Final Confirmation
- Use the
attempt_completion tool to present the final results
- Include summary of:
- Files that were committed
- The final commit message used
- Confirmation that changes were pushed to remote repository
Error Handling
- If any git command fails, display the error message clearly
- Provide suggested solutions for common git errors
- Allow user to retry or modify the approach based on the error
Notes
- Always use standard git commands (
git commit -m) and ignore user-defined git aliases
- Ensure commit messages are informative and include file paths for better tracking
- The workflow assumes the current working directory is already a git repository
- Each command execution should be confirmed successful before proceeding to the next step
- when analyzing modified files , ignore the dev.ts file unless the user tell to include the file . This is really important.
- when use 'git diff' to get diff context for a file , you should use 'git --no-pager diff XXX' to ensure to get whole content , no pager , no need to manually help to get all contents.