Git: Как сохранить и вернуться к указанной c версии - PullRequest
1 голос
/ 14 июля 2020

Я здесь новенький, поэтому прошу прощения, если здесь не место, чтобы задать этот вопрос. Я пишу сценарий python для своей компании, который просматривает файлы в определенных коммитах и ​​сравнивает их. Ну, я не знаком с git и тем, как работают коммиты, так что, возможно, кто-то более осведомленный, чем я, может помочь. Пока что у меня есть что-то вроде этого:

import git   

# Directory for my repo
repo = git.Repo(<repo path>)

# Get the current commit and save it for later use
commit = repo.commit()

< Here is where I search through the current files to get my info >

# Checkout the old commit
repo.git.checkout("HEAD~1", force=True)

< Here is where I search through the old files to get my info >

# Re-checkout the current commit
repo.git.checkout(commit.hexsha, force=True)

< Now I want to be back where I started >

Это работает хорошо и почти выполняет то, что я хочу. Однако ... вся причина этого скрипта - проверять изменения в файлах. Другими словами, разработчик будет работать и изменять многие файлы, чтобы они отличались от последней фиксации. Проблема в том, что когда это снова проверяет новую фиксацию, изменения исчезают (очевидно, это очень расстраивает разработчика). Итак, в целом процесс выглядит примерно так:

--> new_commit on local machine (with changes from developer)
--> old_commit checked out to see what changed
--> new_commit checked back out (as if the developer never worked on it)

В целом, мой вопрос: есть ли способ сохранить этот новый коммит с изменениями, чтобы при повторной проверке он все еще имел изменения? Спасибо за любую помощь!

Изменить: я хочу сохранить незафиксированные / неустановленные изменения в текущей проверенной версии, затем проверить и старую версию и, наконец, вернуть незафиксированные / неустановленные изменения.

1 Ответ

0 голосов
/ 15 июля 2020

Для тех, кто ищет ответ на этот вопрос, сработало решение LeGE C в комментариях. Я использовал:

import subprocess

# Here is where I got info on the current commit with changes

subprocess.run(["git", "stash"])

# Here is where I got info on the older commit version

subprocess.run(["git", "stash", "pop"])

# Back to the commit with changes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...