python如何使用gitbash执行git命令?

 我来答
有缘无份1967duh
高粉答主

推荐于2019-10-26 · 说的都是干货,快来关注
知道大有可为答主
回答量:226
采纳率:100%
帮助的人:4.1万
展开全部

代码如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-# 

@name   : find_t.py# @author : cat# 

@date   : 2017/8/2.import osimport timedef bash_shell(bash_command):
"""
python 中执行 bash 命令     :param bash_command:
:return: bash 命令执行后的控制台输出
"""
try:       

return os.popen(bash_command).read().strip()    

except:        return Nonedef find_target(target_path="./../", key='.git'):
"""

查找目标目录所在的目录 : 如 

/aa/bb/.git --> return /aa/bb/
:param target_path:
:param key: target
:return:
"""
walk = os.walk(target_path)    

for super_dir, dir_names, file_names in walk:        

for dir_name in dir_names:            

if dir_name == key:

dir_full_path = os.path.join(super_dir, dir_name)                

# print(dir_full_path, super_dir, dir_name, sep=" ## ")

yield super_dirif __name__ == '__main__':

print("start execute bash ...........")

st = time.time()
cwd = os.getcwd()    

# this for repo
f

or repo_path in find_target(os.getcwd(), key='.repo'):

os.chdir(repo_path)       

if repo_path == os.getcwd():

print('find repo in -->', repo_path)

print(bash_shell('pwd'))

print(bash_shell('repo forall -c git config core.fileMode false --replace-all'))        

else:

print('error in chdir 2 {}'.format(repo_path))        

if os.getcwd() != cwd:

os.chdir(cwd)       

if os.getcwd() != cwd:

print('change 2 cwd FAIL !!!  {}'.format(cwd))    

# this for git

for git_path in find_target(os.getcwd(), key='.git'):

os.chdir(git_path)       

if git_path == os.getcwd():

print('find git in -->', git_path)

print(bash_shell('pwd'))

print(bash_shell('git config --global core.filemode false'))        

else:

print('error in chdir 2 {}'.format(git_path))        

if os.getcwd() != cwd:

os.chdir(cwd)       

if os.getcwd() != cwd:

print('change 2 cwd FAIL !!!  {}'.format(cwd))

et = time.time()

print('\n\n    

#### execute finished in {:.3f} seconds ####'.format(et - st))

print('\n')    # test for bash_command
# print(bash_shell('git init'))

# print(bash_shell('ls -al'))

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式