python - 存储在 .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
解决方案
要读取当前分支,请使用git symbolic-ref
or git rev-parse
:
git symbolic-ref
适用于符号 ref 的所有情况HEAD
,包括它是尚不存在的分支的符号名称的情况。1分离 时失败HEAD
,即直接指向提交。git rev-parse --symbolic-full-name HEAD
HEAD
适用于识别某些提交的所有情况。HEAD
当是一个尚不存在的分支的符号名称时,它会失败,而当HEAD
它被分离时,它会出现 nameHEAD
。
要查找某个远程的 URL,请使用. 请注意,如果 Git 配置为三角工作流,则这是获取URL,而不是推送URL,因此请检查结果以查看是否有单独的推送 URL。git config --get remote.remote.url
git config --get remote.remote.pushurl
请注意,可以有任意数量的遥控器,包括没有。
1 Git 将此称为孤立分支或未出生分支,具体取决于 Git 的哪个部分正在执行调用。要进入这种状态,请创建一个新的空存储库 - 您将使用您选择作为初始名称的任何分支名称,但它不会存在,因为没有提交,并且在有提交之前不能存在分支名称 - 或使用git checkout --orphan
或git switch --orphan
。
要进入分离的 HEAD状态,请使用git checkout
任何不是分支名称的有效提交标识符,或者使用git checkout --detach
或git switch --detach
使用或不使用任何有效的提交标识符。
要退出分离的 HEAD 状态,请使用git checkout
或git switch
使用有效的分支名称(包括这些命令创建新分支名称,然后附加HEAD
到它的各种情况)。
推荐阅读
- php - 顺利刷新整个 html/php 页面
- sql-server - 用什么?用于远程服务器的 SQL Service Broker 或 SQL Integration Services
- sql-server - SSRS 报告源代码控制
- python - 无法猜测程序中的无效语法
- unity3d - 字体是用什么单位测量的
- odoo-11 - 为什么 Odoo 没有检测到我创建的模型?
- plotly - Plotly 获取图例可见状态
- javascript - fullpage.js 与 jqueryui 手风琴:打开部分后滚动到顶部
- java - 我在更新数据库时遇到问题。使用方法 executeUpdate() tnrows 错误
- drupal-7 - Drupal7:将选定字段实时链接到 Drupal7 中的文本字段