このコードはPython( "import git"を使用)にあります。
repo = git.Repo("my_repository")
repo.git.add("bla.txt")
repo.git.commit("my commit description")
今、私はこのコミットをプッシュしたいと思います。私は多くのことを試みましたが、成功しませんでした。 Pythonコマンドは、次のBashコマンドに似ています:
git Push Origin HEAD:refs/for/master
以下は、git add
、git commit
、次にgit Push
へのコードで、 GitPython を使用しています。
インストール GitPython を使用してpip install gitpython
をインストールします。
from git import Repo
PATH_OF_GIT_REPO = r'path\to\your\project\folder\.git' # make sure .git folder is properly configured
COMMIT_MESSAGE = 'comment from python script'
def git_Push():
try:
repo = Repo(PATH_OF_GIT_REPO)
repo.git.add(update=True)
repo.index.commit(COMMIT_MESSAGE)
Origin = repo.remote(name='Origin')
Origin.Push()
except:
print('Some error occured while pushing the code')
git_Push()
以下を試すことができます。問題が解決する可能性があります...
repo.git.pull('Origin', new_branch)
repo.git.Push('Origin', new_branch)
これは、次のようにインデックス( ここに少し文書化 )を使用することで実現できます。
from git import Repo
repo = Repo('path/to/git/repo') # if repo is CWD just do '.'
repo.index.add(['bla.txt'])
repo.index.commit('my commit description')
Origin = repo.remote('Origin')
Origin.Push()
私も同じ問題を抱えていました。私はそれを解決しました
repo.git.Push("Origin", "HEAD:refs/for/master")
gitpython
http://gitpython.readthedocs.io/en/stable/tutorial.html のドキュメントページをご覧ください。 Origin = repo.create_remote('Origin', repo.remotes.Origin.url)
のようなものでリモートリポジトリを定義する必要があります
次にOrigin.pull()
セクションの「リモコンの処理」のドキュメントで例全体を見てみます
これはドキュメントの完全な例です
empty_repo = git.Repo.init(osp.join(rw_dir, 'empty'))
Origin = empty_repo.create_remote('Origin', repo.remotes.Origin.url)
assert Origin.exists()
assert Origin == empty_repo.remotes.Origin == empty_repo.remotes['Origin']
Origin.fetch() # assure we actually have data. fetch() returns useful information
# Setup a local tracking branch of a remote branch
empty_repo.create_head('master', Origin.refs.master) # create local branch "master" from remote "master"
empty_repo.heads.master.set_tracking_branch(Origin.refs.master) # set local "master" to track remote "master
empty_repo.heads.master.checkout() # checkout local "master" to working tree
# Three above commands in one:
empty_repo.create_head('master', Origin.refs.master).set_tracking_branch(Origin.refs.master).checkout()
# rename remotes
Origin.rename('new_Origin')
# Push and pull behaves similarly to `git Push|pull`
Origin.pull()
Origin.Push()
# assert not empty_repo.delete_remote(Origin).exists() # create and delete remotes