web-dev-qa-db-ja.com

GitPythonでリモートリポジトリをプルするにはどうすればよいですか?

GitPythonを使用してgitリポジトリをプルする方法を見つけようとしています。これまでのところ、これは私が公式ドキュメントから取ったものです ここ

test_remote = repo.create_remote('test', 'git@server:repo.git')
repo.delete_remote(test_remote) # create and delete remotes
Origin = repo.remotes.Origin    # get default remote by name
Origin.refs                     # local remote references
o = Origin.rename('new_Origin') # rename remotes
o.fetch()                       # fetch, pull and Push from and to the remote
o.pull()
o.Push()

事実、repo.remotes.Originにアクセスして、Origin(Origin.rename)の名前を変更せずにプルを実行したいのですが、どうすればこれを実現できますか?ありがとう。

18
Uuid

私はリポジトリ名を直接取得することでこれを管理しました:

 repo = git.Repo('repo_name')
 o = repo.remotes.Origin
 o.pull()
28
Uuid

受け入れられた答えが言うように、repo.remotes.Origin.pull()を使用することは可能ですが、欠点は、実際のエラーメッセージをそれ自体の一般的なエラーに隠すことです。たとえば、DNS解決が機能しない場合、repo.remotes.Origin.pull()は次のエラーメッセージを表示します。

_git.exc.GitCommandError: 'Error when fetching: fatal: Could not read from remote repository.
' returned with exit code 2
_

一方、 GitPythonでgitコマンドを使用repo.git.pull()のように、実際のエラーが表示されます。

_git.exc.GitCommandError: 'git pull' returned with exit code 1
stderr: 'ssh: Could not resolve hostname github.com: Name or service not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.'
_
0
Paul Tobias