You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio 17的ISO C项目中获取Git提交ID/分支名字符串?

在Visual Studio 17的ISO C项目中获取Git提交ID/分支名

方法1:通过Visual Studio生成前事件注入预处理器宏

利用VS的生成前事件调用Git命令,自动生成包含提交ID/分支名的头文件,C代码直接引用即可:

  1. 右键项目 → 属性 → 配置属性 → 生成事件 → 生成前事件 → 命令行
  2. 根据需求添加命令:
    • 生成短提交ID的头文件:
      for /f "delims=" %%i in ('git rev-parse --short HEAD') do echo #define GIT_COMMIT_ID "%%i" > $(ProjectDir)git_commit.h
      
    • 生成分支名的头文件:
      for /f "delims=" %%i in ('git rev-parse --abbrev-ref HEAD') do echo #define GIT_BRANCH_NAME "%%i" > $(ProjectDir)git_branch.h
      
  3. 在C代码中引用生成的头文件:
    #include "git_commit.h"
    #include "git_branch.h"
    
    int main() {
        printf("当前提交ID:%s\n", GIT_COMMIT_ID);
        printf("当前分支名:%s\n", GIT_BRANCH_NAME);
        return 0;
    }
    

方法2:用批处理脚本统一生成Git信息头文件

编写一个批处理脚本(generate_git_info.bat)放在项目目录下,一次性生成包含提交ID和分支名的头文件:

@echo off
for /f "delims=" %%i in ('git rev-parse --short HEAD') do set GIT_COMMIT=%%i
for /f "delims=" %%i in ('git rev-parse --abbrev-ref HEAD') do set GIT_BRANCH=%%i

echo #ifndef GIT_INFO_H > git_info.h
echo #define GIT_INFO_H >> git_info.h
echo #define GIT_COMMIT_ID "%GIT_COMMIT%" >> git_info.h
echo #define GIT_BRANCH_NAME "%GIT_BRANCH%" >> git_info.h
echo #endif >> git_info.h

然后在VS生成前事件中调用该脚本:call $(ProjectDir)generate_git_info.bat,C代码中直接#include "git_info.h"即可使用宏定义。

注意事项

  • 确保Git已添加到系统环境变量,VS才能在生成时调用git命令。
  • 将生成的git_commit.h/git_branch.h/git_info.h加入.gitignore,避免提交到公共仓库(每个开发者本地的Git信息不同)。
  • 所有宏定义完全兼容ISO C标准,无语法兼容性问题。

内容的提问来源于stack exchange,提问作者Cedric Blancher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:12:44