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

如何在Python脚本运行时获取当前Git分支名称?

获取当前Python脚本所在Git分支的方法

要在Python内部捕获git rev-parse --abbrev-ref HEAD的输出并赋值给变量,推荐使用标准库的subprocess模块,它能替代os.system实现输出捕获。以下是几种可靠的实现方式:

方法1:使用subprocess.check_output

这个方法会直接返回命令的输出,同时在命令执行失败时抛出异常,适合需要严格判断执行结果的场景:

import subprocess
import os

# 获取当前脚本所在的目录,确保指向正确的Git仓库
script_directory = os.path.dirname(os.path.abspath(__file__))

try:
    # 执行Git命令并捕获输出
    git_branch = subprocess.check_output(
        ["git", "rev-parse", "--abbrev-ref", "HEAD"],
        cwd=script_directory,  # 指定命令执行的目录为脚本所在目录
        stderr=subprocess.STDOUT,  # 将错误输出重定向到标准输出
        text=True  # 直接返回字符串而非字节流
    ).strip()  # 去除输出末尾的换行符
except subprocess.CalledProcessError:
    # 处理当前目录不是Git仓库的情况
    git_branch = "当前目录不在Git仓库中"

# 现在git_branch变量就存储了分支名称
print(git_branch)

方法2:使用subprocess.run(Python 3.5+推荐)

subprocess.run是更灵活的API,允许你手动判断命令执行状态:

import subprocess
import os

script_directory = os.path.dirname(os.path.abspath(__file__))

# 执行Git命令并捕获所有输出
result = subprocess.run(
    ["git", "rev-parse", "--abbrev-ref", "HEAD"],
    cwd=script_directory,
    capture_output=True,  # 同时捕获标准输出和错误输出
    text=True
)

# 根据命令返回码判断是否执行成功
if result.returncode == 0:
    git_branch = result.stdout.strip()
else:
    git_branch = "当前目录不在Git仓库中"

print(git_branch)

关键说明

  • os.system只能返回命令的退出码,无法捕获输出,所以不适合你的需求;subprocess模块是Python官方推荐的子进程管理工具,能完美解决输出捕获问题。
  • 指定cwd=script_directory是为了确保脚本无论从哪个路径启动,都能获取自身所在目录的Git分支,避免路径错误。
  • 加入异常/错误判断是为了处理脚本不在Git仓库中的情况,防止脚本崩溃。

内容的提问来源于stack exchange,提问作者An old man in the sea.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:15:33