Python에서 Git 사용

5360 단어 pythoncligit
GitPython는 git repos를 위한 Python API입니다.
파이썬에서 git으로 작업해야 합니다.

사용 사례



나는 최근에 Python으로 스크린샷을 만들기 위한 편리한 도구를 만들었고 스크립트 내에서 git commit 및 push를 수행해야 합니다. 이를 위해 나는 GitPython에 도달했습니다.

https://waylonwalker.com/screenshot-to-blog/

설치


GitPython는 설치하려는 pypi에서 호스팅되는 Python 라이브러리입니다.
pip를 사용하여 가상 환경에.

pip install GitPython


저장소 개체 만들기



git 라이브러리에서 Repo를 가져오고 Repo 디렉토리를 포함하는 디렉토리에 대한 경로를 제공하여 .git 개체의 인스턴스를 만듭니다.

from git import Repo repo = Repo('~/git/waylonwalker.com/')


두 개의 인터페이스



문서에서

It provides abstractions of git objects for easy access of repository data,
and additionally allows you to access the git repository more directly using
either a pure python implementation, or the faster, but more resource
intensive git command implementation.



프로젝트를 순조롭게 시작하기 위해 더 집중적이지만 친숙한 git 명령 구현을 사용하기만 하면 되었습니다. 그들의 문서에서 순수한 파이썬 구현을 시작하는 데 좋은tutorial이 있습니다.

상태



git status 요청은 다음과 같이 수행할 수 있습니다.

note I have prefixed my commands with >>> to distinguish between the command
I entered and the output.



>>> print(repo.git.status())

On branch main Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        blog/


cli에 전달할 플래그를 전달할 수도 있습니다.

>>> print(repo.git.status("-s"))
?? blog/


통나무



로그 사용 예.

print(repo.git.log('--oneline', '--graph'))

* 0d28bd8 fix broken image link
* 3573928 wip screenshot-to-blog
* fed9abc wip screenshot-to-blog
* d383780 update for wsl2
* ad72b14 wip screenshot-to-blog
* 144c2f3 gratitude-180


삭제된 파일 찾기



삭제된 모든 파일과 삭제된 해시를 찾는 것과 같은 작업도 수행할 수 있습니다.

print(repo.git.log('--diff-filter', 'D', '--name-only', '--pretty=format:"%h"'))


https://waylonwalker.com/git-find-deleted-files/

full post on finding deleted files



내 경험



이 라이브러리는 두 가지 주요 구현이 있고 더 집중적인 git 명령 구현에 이미 익숙하다는 것을 깨달았을 때 꽤 간단하고 예측 가능해 보였습니다.

좋은 웹페이지 즐겨찾기