Skip to main content
Git 提及让你可以将仓库的历史和更改直接引入与 Cline 的对话中。你可以使用 @git-changes 引用未提交的更改,或使用 @[commit-hash] 引用特定提交。 当你在聊天中输入 @ 时,可以从菜单中选择”Git 更改”或直接输入 @git-changes。对于特定提交,输入 @ 后跟提交哈希(至少 7 个字符)。Cline 将立即看到 git 状态、差异、提交消息和其他相关信息。 当我试图理解代码更改或排查最近提交引入的问题时,我经常使用 git 提及。不再需要尝试复制粘贴差异或提交日志,我只需询问:
我认为这个提交破坏了我们的认证流程:@a1b2c3d

你能解释发生了什么变化以及为什么可能导致问题吗?
这为 Cline 提供了完整的提交信息,包括提交消息、作者、日期和完整的差异。然后 Cline 可以分析确切发生了什么变化以及它如何影响代码库的其他部分。 当你正在处理更改并希望在提交之前获得反馈时,@git-changes 提及是完美的:
这是我当前的更改:@git-changes

我试图为用户配置文件实现一个新功能。我的方法有意义吗?
你有什么潜在问题或改进建议吗?
这向 Cline 显示了你所有未提交的更改,包括新文件、修改的文件及其差异。然后 Cline 可以审查你的更改并提供对你实现的反馈。 当与文件提及结合使用时,Git 提及特别强大。当我调查错误时,我经常引用两者:
我认为这个提交引入了一个错误:@a1b2c3d

这是当前实现:@/src/components/Auth.jsx

我如何在保留预期功能的同时修复问题?
下次处理代码更改或调查问题时,尝试使用 git 提及而不是手动描述或复制更改。你会得到更准确的帮助,因为 Cline 可以看到确切发生了什么变化以及在什么上下文中。

底层工作原理

当你在消息中使用 git 提及时,这是背后发生的情况:

对于 Git 更改(@git-changes

  1. 当你发送消息时,Cline 检测文本中的 @git-changes 模式
  2. 扩展程序运行 git 命令来获取仓库的当前工作状态
  3. 它捕获 git statusgit diff 的输出,以查看所有未提交的更改
  4. 这些信息以结构化格式附加到你的消息中:
    <git_working_state>
    On branch main
    Changes not staged for commit:
      modified: src/components/Button.jsx
      modified: src/styles/main.css
    
    [显示所有更改的完整差异输出]
    </git_working_state>
    

对于特定提交(@[commit-hash]

  1. 当你发送消息时,Cline 检测 @ 后跟提交哈希的模式
  2. 扩展程序运行 git show 和相关命令来获取该提交的信息
  3. 它检索提交消息、作者、日期和完整的差异
  4. 这些信息以结构化格式附加到你的消息中:
    <git_commit hash="a1b2c3d">
    commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t
    Author: Developer Name <dev@example.com>
    Date: Mon May 20 14:30:45 2025 -0700
    
    Fix authentication bug in login form
    
    [显示提交中所有更改的完整差异输出]
    </git_commit>
    
每当你使用 git 提及时,这个过程都会自动发生,为 AI 提供对你代码更改的完整可见性,而无需你复制粘贴差异或提交日志。