首页 > 解决方案 > 存储在 .git 文件夹中的存储库信息(如 url 、工作分支)在哪里?

问题描述

我正在尝试编写一个 github 自动化脚本,但我面临一个问题,即我不知道存储库信息存储在 .git 文件夹中的位置。通过手动搜索文件,我发现 .git\config 文件有一些信息,但它确实不一致,因为有时信息不存在。有人可以告诉我应该查看哪个文件以获取存储库信息(即 URL,工作分支)。

这是我从 .git\config 文件中获取 URL 和分支的代码:-

import os
mypath = os.getcwd()
infofile = mypath + '/.git/config'

def takeInfo():
    print('No Existing repo info found\n')
    url = str(input('Enter the Github Repo URL: '))
    branch = str(input('Enter the branch: '))
    info = ['n' , url , branch]
    return info

def checkinfoInDir():
    if (os.path.exists(infofile)):
        print('Repo Info Found:-')
        with open(infofile, "r") as f:
            info = f.readlines()
            # print(info)
            for ele in info:
                if('url' in ele):
                    url = info[info.index(ele)].split()[2]

                if('branch' in ele):
                    branch = info[info.index(ele)].split()[1].split('"')[1]
            info = [url , branch]
    else:
        info = takeInfo()
    return info

标签: pythongitgithubautomation

解决方案


要读取当前分支,请使用git symbolic-refor git rev-parse

  • git symbolic-ref适用于符号 ref 的所有情况HEAD,包括它是尚不存在的分支的符号名称的情况。1分离 时失败HEAD,即直接指向提交。

  • git rev-parse --symbolic-full-name HEADHEAD适用于识别某些提交的所有情况。HEAD当是一个尚不存在的分支的符号名称时,它会失败,而当HEAD它被分离时,它会出现 name HEAD

要查找某个远程的 URL,请使用. 请注意,如果 Git 配置为三角工作流,则这是获取URL,而不是推送URL,因此请检查结果以查看是否有单独的推送 URL。git config --get remote.remote.urlgit config --get remote.remote.pushurl

请注意,可以有任意数量的遥控器,包括没有。


1 Git 将此称为孤立分支或未出生分支,具体取决于 Git 的哪个部分正在执行调用。要进入这种状态,请创建一个新的空存储库 - 您将使用您选择作为初始名称的任何分支名称,但它不会存在,因为没有提交,并且在有提交之前不能存在分支名称 - 或使用git checkout --orphangit switch --orphan

要进入分离的 HEAD状态,请使用git checkout任何不是分支名称的有效提交标识符,或者使用git checkout --detachgit switch --detach使用或不使用任何有效的提交标识符。

退出分离的 HEAD 状态,请使用git checkoutgit switch使用有效的分支名称(包括这些命令创建分支名称,然后附加HEAD到它的各种情况)。


推荐阅读