Use GitPython to Checkout a new branch and push to remote
11,537
I've done something like creating a txt in a remote branch from newly created branch and commit, push to remote. Here's my code
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')
Author by
etlsh
Updated on June 08, 2022Comments
-
etlsh about 2 years
Given a
repo
from GitPython, how can I create a new local branch, add some files, and push it to remote using GitPython?To create a
repo
:from git import * curr_dir = os.path.dirname(os.path.realpath(__file__)) repo = Repo(curr_dir)
For now, I'm just using
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)])
-
etlsh about 8 yearsthanks but using the git module to exactly command is just the same as sub process. ill go deeper into pygit2 but the module seems like he lacks the things i need ( or its very difficult to achieve them)