Git通过python子进程添加

我试图通过python子进程运行git命令.我这样做是通过调用github的cmd目录中的git.exe来实现的.我设法让大多数命令工作(init,remote,status)但是在调用git add时出错了.到目前为止这是我的代码:import subprocess gitPath = C:/path/to/git/cmd.exe repoPath

我试图通过python子进程运行git命令.我这样做是通过调用github的cmd目录中的git.exe来实现的.

我设法让大多数命令工作(init,remote,status)但是在调用git add时出错了.到目前为止这是我的代码:

import subprocess

gitPath = 'C:/path/to/git/cmd.exe'
repoPath = 'C:/path/to/my/repo'
repoUrl = 'https://www.github.com/login/repo';

#list to set directory and working tree
dirList = ['--git-dir='+repoPath+'/.git','--work-tree='+repoPath]


#init gitt
subprocess.call([gitPath] + ['init',repoPath]

#add remote
subprocess.call([gitPath] + dirList + ['remote','add','origin',repoUrl])

#Check status,returns files to be commited etc,so a working repo exists there
subprocess.call([gitPath] + dirList + ['status'])

#Adds all files in folder (this returns the error)
subprocess.call([gitPath] + dirList + ['add','.']

我得到的错误是:

fatal: Not a git repository (or any of the parent directories): .git

所以我搜索了这个错误,我找到的大多数解决方案都是关于不在正确的目录中.所以我的猜测也就是这样.但是,我不知道为什么. Git status返回目录中的正确文件,我已经设置了–git-dir和–work-tree

如果我去git shell我没有问题添加文件,但我不知道为什么这里出问题.

我不是在寻找使用pythons git库的解决方案.

最佳答案
您需要指定工作目录.

函数Popen,call,check_callcheck_output有一个cwd关键字参数,例如:

subprocess.call([gitPath] + dirList + ['add','.'],cwd='/home/me/workdir')

另见Specify working directory for popen

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部