etl*_*lsh 6 python git gitpython
给定repo来自 GitPython 的 a,我如何创建一个新的本地分支,添加一些文件,并使用 GitPython 将其推送到远程?
创建一个repo:
from git import *
curr_dir = os.path.dirname(os.path.realpath(__file__))
repo = Repo(curr_dir)
Run Code Online (Sandbox Code Playgroud)
现在,我只是使用subprocess:
def publish_changes_to_git(commit_msg):
curr_time = time.time()
ts = datetime.datetime.fromtimestamp(curr_time).strftime('%Y-%m-%d-%H-%M-%S')
branch_name = "auto-commit-{ts}".format(ts=ts)
subprocess.check_output(["git", "checkout", "-b", branch_name])
subprocess.check_output(["git", "add", SOME_PATH])
subprocess.check_output(
["git", "commit", "-m", "auto-git-commit: {msg}".format(msg=commit_msg)])
Run Code Online (Sandbox Code Playgroud)
Bha*_*gan 10
我做了一些事情,比如从新创建的分支在远程分支中创建一个 txt 并提交,推送到远程。这是我的代码
import git
import datetime
import os
from time import *
from os import path
from git import Repo
def commit_files():
if repo != None:
new_branch = 'your_new_branch'
current = repo.create_head(new_branch)
current.checkout()
master = self.repo.heads.master
repo.git.pull('origin', master)
#creating file
dtime = strftime('%d-%m-%Y %H:%M:%S', localtime())
with open(self.local_repo_path + path.sep + 'lastCommit' + '.txt', 'w') as f:
f.write(str(dtime))
if not path.exists(self.local_repo_path):
os.makedirs(self.local_repo_path)
print('file created---------------------')
if repo.index.diff(None) or repo.untracked_files:
repo.git.add(A=True)
repo.git.commit(m='msg')
repo.git.push('--set-upstream', 'origin', current)
print('git push')
else:
print('no changes')
Run Code Online (Sandbox Code Playgroud)
Dav*_*idN -2
gitypython 看起来提供了对 git 的低级和高级访问,但您可以调用 git 命令,请参阅http://gitpython.readthedocs.io/en/stable/reference.html#module-git.cmd。
或者,考虑使用http://www.pygit2.org/代替,http://www.pygit2.org/进行更高级别的访问。这里有一些例子http://www.pygit2.org/recipes.html
| 归档时间: |
|
| 查看次数: |
9455 次 |
| 最近记录: |