Python에서 Git 사용
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 명령 구현에 이미 익숙하다는 것을 깨달았을 때 꽤 간단하고 예측 가능해 보였습니다.
Reference
이 문제에 관하여(Python에서 Git 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/waylonwalker/using-git-from-python-572k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)