とGitチェックアウト
を使用している場合このコマンドでは、リポジトリのHEADがコミット(分離ヘッド)と作業ディレクトリを指しています。
現時点では、リポジトリがPyGit2を使ってコミットを指す:
def go(self, repo_name, version):
repo = pygit2.Repository(bdd[repo_name])
#commit = repo.revparse_single(version)
#repo.reset(version, pygit2.GIT_RESET_HARD)
repo.set_head(pygit2.Oid(hex=version))
print repo.head_is_detached
私の問題は、Git CLIのように作業ディレクトリをロールバックする方法が見つからないということです。 私が使用してみました:
repo.checkout_head()
:それは作業ディレクトリに何もしていません。repo.checkout()
:クラッシュGitError: X conflicts prevent checkout
ではRepository.reset(ref, pygit2.GIT_RESET_HARD)
を使用せずに、この動作を複製する方法はありますか?
'repo.checkout()'を実行する前に、作業ディレクトリがクリーンですか? –
@NilsWerner私はコミットを指すようにHEADを変更した後、 'repo.checkout()'を実行しようとしています。この時点で、作業ディレクトリには最後にコミットされたものがすべて含まれているので、作業ディレクトリはHEADの観点からはきれいではありません。 – Maeln
'set_head()'と 'checkout()'を組み合わせないでください(ワークスペースが汚れてしまいます)。ちょうど 'checkout()'を使ってください。 –