Gitチェックアウトに似た枝を切り替えるには支店に
を切り替えるには、効果的に新しいブランチにあなたの頭のシンボリック参照を指すと一致させるために、あなたのインデックスと作業コピーをリセットする必要があります。それを行うための簡単な手動の方法は残酷にかかわらず、作業コピーとインデックス内のユーザの変更を上書きする1
# Reset our working tree 10 commits into the past
past_branch = repo.create_head('past_branch', 'HEAD~10')
repo.head.reference = past_branch
assert not repo.head.is_detached
# reset the index and working tree to match the pointed-to commit
repo.head.reset(index=True, working_tree=True)
# To detach your head, you have to point to a commit directy
repo.head.reference = repo.commit('HEAD~5')
assert repo.head.is_detached
# now our head points 15 commits into the past, whereas the working tree
# and index are 10 commits in the past
前のアプローチを以下とgitのチェックアウト未満洗練されています。後者は一般的にあなたの仕事を破壊するのを防ぎます。次のように、より安全なアプローチを使用してください。ちょうどその下に
# checkout the branch using git-checkout. It will fail as the working tree appears dirty
self.failUnlessRaises(git.GitCommandError, repo.heads.master.checkout)
repo.heads.past_branch.checkout()
または、: それはラップされていないとして、あなたは機能が不足している場合はgitの直接 を使用して、あなたは便利な直接のgitコマンドを使用することができます。各リポジトリインスタンスが所有します。
git = repo.git
git.checkout('HEAD', b="my_new_branch") # create a new branch
git.branch('another-new-one')
git.branch('-D', 'another-new-one') # pass strings for full control over argument order
git.for_each_ref() # '-' becomes '_' when calling it
そして単にはgit.checkout()アプローチ
'repo.head.reference = repo.commit(someSHA)'と言う 'gitのチェックアウトsomeSHA'の違いは何であるのか?私はrefがpythonを使っているときにHEADとmasterを指しているが、git cliを使うときはHEADだけであることが分かる。作業ディレクトリがPython経由で使用されているときにはダーティであることを意味します。どのように私は分離状態で終了し、pythonツールを使用してきれいにすることができますか? – DanCat