Tytuł jest oczywisty. Jaki będzie kod Pythona równoważny uruchomieniu git reset --hard
(na terminalu) przy użyciu modułu GitPython?Jak zrobić reset git --hard używając gitPython?
7
A
Odpowiedz
6
Szukałem reset
w the documentation i znalazł this:
class git.refs.head.HEAD(repo, path='HEAD')
reset(commit='HEAD', index=True, working_tree=False, paths=None, **kwargs)
Wyczyść naszej głowie, aby dana popełnić ewentualnie synchronizacji indeksu i drzewa pracy. Odwołanie, do którego odnosimy się, zostanie również ustawione w celu zatwierdzenia.
10
Można użyć:
repo = git.Repo('c:/SomeRepo')
repo.git.reset('--hard')
lub jeśli trzeba przywrócić do konkretnego oddziału:
repo.git.reset('--hard','origin/master')
lub w moim przypadku, jeśli chcesz po prostu ciężko zaktualizować repo do origin/master (ostrzeżenie, spowoduje to utratę bieżących zmian):
# blast any current changes
repo.git.reset('--hard')
# ensure master is checked out
repo.heads.master.checkout()
# blast any changes there (only if it wasn't checked out)
repo.git.reset('--hard')
# remove any extra non-tracked files (.pyc, etc)
repo.git.clean('-xdf')
# pull in the changes from from the remote
repo.remotes.origin.pull()
1
Y możesz użyć:
repo = git.Repo('repo')
# ...
# Remove last commit
repo.head.reset('HEAD~1', index=True, working_tree=True)