Ich versuche den Weg zu finden, um ein Git-Repository mit gitPython abzurufen. Bisher habe ich dies den offiziellen Dokumenten hier entnommen .

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()

Tatsache ist, dass ich auf repo.remotes.origin zugreifen möchte, um einen Pull durchzuführen, ohne den Ursprung umzubenennen (origin.rename). Wie kann ich dies erreichen? Vielen Dank.

23
Uuid 1 Nov. 2012 im 00:01

3 Antworten

Beste Antwort

Ich habe das geschafft, indem ich den Repo-Namen direkt erhalten habe:

 repo = git.Repo('repo_name')
 o = repo.remotes.origin
 o.pull()
33
Uuid 31 Okt. 2012 im 20:16

Wie die akzeptierte Antwort besagt, ist es möglich, repo.remotes.origin.pull() zu verwenden, aber der Nachteil ist, dass es die tatsächlichen Fehlermeldungen in seinen eigenen generischen Fehlern verbirgt. Wenn beispielsweise die DNS-Auflösung nicht funktioniert, zeigt repo.remotes.origin.pull() die folgende Fehlermeldung an:

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

Auf der anderen Seite mit Git-Befehlen mit GitPython wie repo.git.pull() zeigt den tatsächlichen Fehler:

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.'
2
Paul Tobias 24 Nov. 2017 im 09:00

Hoffe du suchst das:

import git
g = git.Git('git-repo')
g.pull('origin','branch-name')

Ruft die neuesten Commits für das angegebene Repository und den angegebenen Zweig ab.

0
Akhil Singhal 8 Feb. 2018 im 09:27