14

GitPythonを使用して次のことを判断するにはどうすればよいですか。

  • ローカル ブランチがリモートより先にある (安全にプッシュできる)
  • 私のローカルブランチはリモートの背後にあります(安全にプルできます)
  • 私のローカルブランチはリモートから分岐しましたか?

ローカルとリモートが同じかどうかを確認するには、次のようにしています。

def local_and_remote_are_at_same_commit(repo, remote):
    local_commit = repo.commit()
    remote_commit = remote.fetch()[0].commit
    return local_commit.hexsha == remote_commit.hexsha
4

2 に答える 2

16

https://stackoverflow.com/a/15862203/197789を参照してください。

例えば

commits_behind = repo.iter_commits('master..origin/master')

commits_ahead = repo.iter_commits('origin/master..master')

次に、次のようなものを使用して、イテレータからカウントに移動できます。

count = sum(1 for c in commits_ahead)

( を実行する前に、リモートから取得したい場合がありますiter_commits。例: repo.remotes.origin.fetch())

これは GitPython 1.0.2 で最後に確認されました。

于 2014-01-29T12:56:01.583 に答える