Gitpython cam kết

Cả Python và Git đều không cần thuyết trình. cái trước là một trong những ngôn ngữ lập trình có mục đích chung được sử dụng nhiều nhất; . Thông thường, chúng tôi tương tác với các kho git bằng cách sử dụng nhị phân git;

Trong hướng dẫn này, chúng ta sẽ thấy cách quản lý các kho lưu trữ và triển khai quy trình công việc git cơ bản bằng thư viện GitPython

Trong hướng dẫn này, bạn sẽ học

  • Cách cài đặt thư viện GitPython
  • Cách quản lý kho git với thư viện GitPython
  • Cách thêm điều khiển từ xa vào kho lưu trữ
  • Cách sao chép kho lưu trữ git
  • Cách tạo và đẩy các cam kết
  • Cách làm việc với chi nhánh
  • Cách quản lý các mô hình con
Gitpython cam kết
Cách quản lý kho git bằng Python

Các yêu cầu và quy ước phần mềm được sử dụng

Danh mụcYêu cầu, Quy ước hoặc Phiên bản phần mềm Được sử dụngSystemDistribution-independentSoftwarePython và thư viện GitPythonOtherNoneConventions# – yêu cầu các lệnh linux đã cho phải được thực thi với quyền root trực tiếp với tư cách là người dùng root hoặc bằng cách sử dụng lệnh
$ sudo pacman -Sy python-gitpython
8
$ – requires given linux-commands to be executed as a regular non-privileged user

Cài đặt thư viện GitPyhon

Thư viện GitPython có thể được cài đặt bằng cách sử dụng trình quản lý gói phân phối yêu thích của chúng tôi hoặc bằng cách sử dụng

$ sudo pacman -Sy python-gitpython
9, trình quản lý gói Python. Phương thức đầu tiên dành riêng cho phân phối, phương thức sau có thể được sử dụng trên mọi bản phân phối nơi cài đặt pip

Để cài đặt phần mềm nguyên bản trên các phiên bản Fedora gần đây, chúng ta có thể chạy lệnh sau

$ sudo dnf install python3-GitPython


Theo dõi LinuxConfig. org trên Twitter để biết các mẹo và thủ thuật mới nhất về Linux.
Trên Debian và bản phân phối dựa trên Debian, gói này có tên là “python3-git” và có thể được cài đặt qua apt.
$ sudo apt install python3-git

GitPython cũng có sẵn trong kho lưu trữ “Cộng đồng” của Archlinux. Chúng tôi có thể cài đặt gói qua

$ pip install GitPython --user
0

$ sudo pacman -Sy python-gitpython

Phương pháp phổ biến để cài đặt GitPython là sử dụng pip. Chúng tôi làm điều đó bằng cách khởi chạy lệnh sau

$ pip install GitPython --user

Lưu ý rằng vì chúng tôi đã sử dụng tùy chọn

$ pip install GitPython --user
1 trong lệnh trên, nên gói sẽ chỉ được cài đặt cho người dùng mà chúng tôi đã khởi chạy lệnh dưới dạng. Vì lý do này, chúng tôi không cần sử dụng leo thang đặc quyền

Bây giờ chúng ta đã cài đặt thư viện GitPython, hãy xem cách sử dụng nó

Tạo kho lưu trữ git cục bộ

Hãy xem cách chúng tôi có thể thực hiện các bước đầu tiên với GitPython. Điều đầu tiên chúng ta có thể muốn tìm hiểu là cách tạo một kho lưu trữ cục bộ. Khi làm việc với nhị phân git, lệnh chúng tôi sử dụng để khởi tạo kho lưu trữ cục bộ là

$ pip install GitPython --user
2. Khi sử dụng thư viện GitPython, chúng ta cần sử dụng đoạn mã sau, thay vào đó

from git.repo import Repo
repository = Repo.init('/path/of/repository')


Trong đoạn mã trên, điều đầu tiên chúng tôi làm là nhập lớp
$ pip install GitPython --user
3 từ mô-đun git. Lớp này được sử dụng để đại diện cho một kho lưu trữ git. Chúng tôi đã gọi phương thức init được liên kết với. Phương thức này là một “phương thức lớp”, điều này có nghĩa là chúng ta có thể gọi nó mà không cần tạo trước một thể hiện của lớp;

Nếu chúng ta muốn tạo một kho lưu trữ trống thì sao? . mã của chúng tôi trở thành

$ sudo pacman -Sy python-gitpython
2

Thêm điều khiển từ xa vào kho lưu trữ của chúng tôi

Khi chúng tôi đã tạo kho lưu trữ của mình, chúng tôi muốn thêm một đối tác từ xa vào đó. Ví dụ: giả sử chúng tôi tạo một kho lưu trữ trên Github để lưu trữ dự án của mình;

$ sudo pacman -Sy python-gitpython
4

Chúng tôi đã chuyển tên sẽ được sử dụng cho điều khiển từ xa làm đối số đầu tiên của phương thức) và URL của kho lưu trữ từ xa làm đối số thứ hai. Phương thức

$ pip install GitPython --user
5 trả về một thể hiện của lớp
$ pip install GitPython --user
7, được sử dụng để đại diện cho một điều khiển từ xa

Thêm tệp vào chỉ mục kho lưu trữ và tạo cam kết đầu tiên của chúng tôi

Bây giờ, giả sử chúng ta đã tạo một “chỉ mục. html” bên trong kho lưu trữ của chúng tôi có chứa đoạn mã sau

$ sudo pacman -Sy python-gitpython
7

Tệp mặc dù tồn tại trong kho lưu trữ nhưng chưa được theo dõi. Để có danh sách tệp không được theo dõi trong kho lưu trữ của chúng tôi, chúng tôi có thể tham chiếu thuộc tính

$ pip install GitPython --user
8 (đây thực sự là một phương pháp sử dụng trình trang trí
$ pip install GitPython --user
9)”

$ sudo dnf install python3-GitPython
0

Trong trường hợp này, danh sách trả về là

$ sudo dnf install python3-GitPython
1

Làm cách nào để kiểm tra xem kho lưu trữ của bạn có thay đổi hay không? . Phương thức này trả về
from git.repo import Repo
repository = Repo.init('/path/of/repository')
1 nếu kho lưu trữ được coi là bẩn, ngược lại là
from git.repo import Repo
repository = Repo.init('/path/of/repository')
2. Theo mặc định, một kho lưu trữ được coi là bẩn nếu tồn tại các thay đổi đối với chỉ mục của nó. sự tồn tại của các tệp không bị theo dõi không ảnh hưởng đến điều này theo mặc định. Nếu tồn tại các tệp không bị theo dõi, kho lưu trữ không bị coi là "bẩn", trừ khi chúng ta đặt đối số
$ pip install GitPython --user
8 thành
from git.repo import Repo
repository = Repo.init('/path/of/repository')
1.
$ sudo apt install python3-git
0

Để thêm tệp i

from git.repo import Repo
repository = Repo.init('/path/of/repository')
5 vào chỉ mục kho lưu trữ của chúng tôi, chúng tôi cần sử dụng đoạn mã sau

$ sudo apt install python3-git
1

Trong đoạn mã trên, chỉ mục (đây lại là phương thức

$ pip install GitPython --user
9) trả về một thể hiện của lớp
from git.repo import Repo
repository = Repo.init('/path/of/repository')
7xFile, được sử dụng để biểu thị chỉ mục kho lưu trữ. Chúng tôi gọi phương thức add của đối tượng này để thêm tệp vào chỉ mục. Phương thức chấp nhận một danh sách làm đối số đầu tiên, do đó chúng ta có thể thêm nhiều tệp cùng một lúc

Khi chúng tôi đã thêm các tệp cần thiết vào chỉ mục của mình, chúng tôi muốn tạo một cam kết. Để thực hiện hành động như vậy, chúng tôi gọi phương thức

from git.repo import Repo
repository = Repo.init('/path/of/repository')
8 của đối tượng chỉ mục và chuyển thông báo cam kết làm đối số

$ sudo apt install python3-git
2

Phương thức cam kết trả về một thể hiện của lớp Cam kết, được sử dụng để thể hiện một cam kết trong thư viện. Ở trên, chúng tôi đã sử dụng biến cam kết để tham chiếu đối tượng này

Đẩy và kéo các thay đổi đến và từ điều khiển từ xa

Chúng tôi đã tạo cam kết đầu tiên của mình với GitPython, bây giờ chúng tôi muốn đẩy cam kết đến điều khiển từ xa mà chúng tôi đã thêm trong bước đầu tiên của hướng dẫn này. Thực hiện các hành động như vậy là thực sự dễ dàng. Trước hết, chúng ta phải nói rằng tất cả các điều khiển từ xa liên kết với kho lưu trữ của chúng ta đều có thể được truy cập thông qua phương thức điều khiển từ xa của lớp Repo

$ sudo apt install python3-git
3

Như chúng ta đã biết, mỗi remote được đại diện bởi một đối tượng Remote. Trong ví dụ của chúng tôi, chúng tôi muốn đẩy cam kết của mình tới điều khiển từ xa mà chúng tôi gọi là “origin”, vì vậy tất cả những gì chúng tôi phải làm là gọi phương thức đẩy trên đó

$ sudo apt install python3-git
4

Những gì chúng tôi đã làm ở trên là gọi phương thức đẩy và chuyển ánh xạ giữa nhánh cục bộ và nhánh từ xa làm đối số đầu tiên. về cơ bản, chúng tôi rất buồn khi đẩy nội dung của nhánh chính của chúng tôi sang nhánh chính từ xa. Vì chúng tôi đã chỉ định một url http khi chúng tôi tạo điều khiển từ xa “gốc”, nên khi mã được thực thi, chúng tôi được nhắc cung cấp thông tin đăng nhập của mình

$ sudo apt install python3-git
5

Theo dõi LinuxConfig. org trên Twitter để biết các mẹo và thủ thuật mới nhất về Linux.
Lưu ý rằng nếu chúng tôi sử dụng URL https cho kho lưu trữ từ xa và chúng tôi đã đặt xác thực hai yếu tố trên Github, chúng tôi sẽ không thể đẩy tới đó. Để tránh phải cung cấp thông tin đăng nhập, chúng tôi có thể thiết lập khóa ssh và sử dụng URL ssh. Để thay đổi URL của điều khiển từ xa “origin”, chúng ta cần sử dụng phương thức
from git.repo import Repo
repository = Repo.init('/path/of/repository')
9.
$ sudo apt install python3-git
6

Nếu chúng tôi đã đặt khóa ssh trên điều khiển từ xa (trong trường hợp này là github), chúng tôi sẽ không được nhắc cung cấp mật khẩu hoặc tên người dùng (trừ khi khóa riêng của chúng tôi được bảo vệ bằng mật khẩu), vì vậy quy trình sẽ hoàn toàn tự động

Phương thức đẩy trả về một thể hiện của đối tượng

$ sudo pacman -Sy python-gitpython
20, được sử dụng để thể hiện một lần đẩy

Để tránh phải chỉ định bản đồ giữa nhánh cục bộ và nhánh ngược dòng khi chúng tôi đẩy một cam kết, chúng tôi có thể thực hiện đẩy trực tiếp qua nhị phân git bằng cách sử dụng lớp

$ sudo pacman -Sy python-gitpython
21. Lớp có thể được tham chiếu thông qua thuộc tính git của đối tượng kho lưu trữ. Những gì chúng tôi phải làm là vượt qua
$ sudo pacman -Sy python-gitpython
22, vì vậy chúng tôi viết

$ sudo apt install python3-git
7

Lần tới khi chúng ta thực hiện pthe basics ofush, chúng ta có thể chỉ cần sử dụng

$ sudo apt install python3-git
8

Để lấy các xác nhận từ một kho lưu trữ, theo cách tương tự, thay vào đó, chúng tôi sử dụng phương thức

$ sudo pacman -Sy python-gitpython
23 (một lần nữa, trong trường hợp này, refspec là không cần thiết kể từ trước khi chúng tôi sử dụng
$ sudo pacman -Sy python-gitpython
22)

$ sudo apt install python3-git
9

Làm việc với các chi nhánh

Trong kho lưu trữ git, các nhánh có thể được sử dụng để phát triển các tính năng mới hoặc sửa lỗi mà không cần chạm vào nhánh chính, chính nhánh này là nhánh chính nơi mã phải luôn ổn định

Tạo chi nhánh

Khi sử dụng GitPython, để tạo một nhánh mới trong kho lưu trữ của chúng ta (giả sử chúng ta muốn gọi nó là “newfeature”), chúng ta sẽ chạy đoạn mã sau

$ sudo pacman -Sy python-gitpython
0

Với mã ở trên, nhánh mới sẽ được tạo từ HEAD hiện tại của kho lưu trữ. Thay vào đó, trong trường hợp chúng ta muốn một nhánh được tạo từ một cam kết cụ thể, chúng ta cần chuyển hàm băm của nó làm đối số thứ hai cho phương thức. Ví dụ.
$ sudo pacman -Sy python-gitpython
1

Chuyển sang chi nhánh

Chuyển sang một nhánh mới liên quan đến việc thay đổi ĐẦU của kho lưu trữ của chúng tôi để nó trỏ đến nó và đồng bộ hóa chỉ mục và cây làm việc. Để chuyển sang ‘new_branch’ mà chúng tôi vừa tạo, chúng tôi sử dụng đoạn mã sau

$ sudo pacman -Sy python-gitpython
2

Xóa chi nhánh

Để xóa một nhánh, chúng ta sử dụng phương thức

$ sudo pacman -Sy python-gitpython
25 trên một thể hiện của lớp
$ pip install GitPython --user
3. Trong trường hợp của chúng tôi, để xóa nhánh 'newfeature', chúng tôi sẽ chạy

$ sudo pacman -Sy python-gitpython
3

Làm việc với các mô-đun con

Các mô-đun con được sử dụng để kết hợp mã từ các kho git khác

Thêm một mô hình con

Giả sử chúng tôi muốn thêm một mô hình con để kết hợp mã được tìm thấy trong 'https. //github. com/foo/mã hữu ích. git’, trong thư mục

$ sudo pacman -Sy python-gitpython
27_dir trong thư mục gốc của dự án của chúng tôi (một thư mục được tạo tự động nếu nó không tồn tại). Đây là mã chúng tôi sẽ viết

$ sudo pacman -Sy python-gitpython
4

Trong ví dụ trên, đối số đầu tiên được truyền cho phương thức

$ sudo pacman -Sy python-gitpython
28 là tên được sử dụng cho mô hình con, đối số thứ hai là đường dẫn mô hình con liên quan đến thư mục gốc của dự án của chúng ta và đối số cuối cùng là URL của bên ngoài.

Liệt kê các mô đun con

Để có danh sách đầy đủ tất cả các mô-đun con được liên kết với kho lưu trữ của chúng tôi, chúng tôi có thể sử dụng

$ sudo pacman -Sy python-gitpython
29es;

$ sudo pacman -Sy python-gitpython
5

Một điều quan trọng cần lưu ý là
$ sudo pacman -Sy python-gitpython
41 trả về danh sách các mô-đun con được liên kết trực tiếp với kho lưu trữ của chúng ta, trong khi đó,
$ sudo pacman -Sy python-gitpython
40 sẽ cho phép chúng ta lặp lại các mô-đun con theo cách đệ quy (kho lưu trữ mà chúng ta đã thêm làm mô-đun con cũng có thể có các mô-đun con được liên kết với nó)

Loại bỏ một mô-đun con

Để xóa một mô-đun con khỏi kho lưu trữ của chúng tôi, chúng tôi phải gọi phương thức

$ sudo pacman -Sy python-gitpython
43 từ đối tượng Mô-đun con được sử dụng để biểu diễn nó. Chúng tôi có thể truy xuất mô-đun con mà chúng tôi muốn xóa, theo tên của nó, chuyển nó làm đối số cho phương thức
$ sudo pacman -Sy python-gitpython
44 (“mã hữu ích” trong trường hợp này)

$ sudo pacman -Sy python-gitpython
6

Đoạn mã trên

  • Xóa mục nhập mô hình con khỏi. tập tin gitmodules
  • Xóa mục nhập mô hình con khỏi. tập tin git/cấu hình
  • Buộc gỡ bỏ mô-đun ngay cả khi nó chứa các sửa đổi (do t
    $ sudo pacman -Sy python-gitpython
    45; đây có thể là điều bạn muốn hoặc không)

Nhân bản một kho lưu trữ

Cho đến bây giờ, chúng ta đã biết cách quản lý kho lưu trữ cục bộ bằng thư viện GitPython; . Để sao chép một kho lưu trữ, chúng ta phải sử dụng phương thức

$ sudo pacman -Sy python-gitpython
46 của lớp
$ pip install GitPython --user
3. Phương thức lấy URL của kho lưu trữ được sao chép làm đối số đầu tiên và đường dẫn hệ thống tệp cục bộ nơi nó sẽ được sao chép, làm đối số thứ hai

$ sudo pacman -Sy python-gitpython
7

kết luận

Trong hướng dẫn này, chúng ta đã học cách bắt đầu làm việc với kho git bằng Python và thư viện GitPython. Chúng tôi đã xem cách sao chép hoặc khởi tạo kho lưu trữ, cách thêm điều khiển từ xa, cách tạo cam kết và cách đẩy và kéo đến và từ điều khiển từ xa. Chúng tôi cũng đã xem cách kiểm tra xem một kho lưu trữ có thay đổi hay không và cách quản lý các mô hình con của nó. Ở đây chúng ta chỉ sơ lược về GitPython API. để biết thêm về nó, vui lòng xem tài liệu chính thức

Lệnh cam kết git là gì?

Lệnh git commit ghi lại ảnh chụp nhanh các thay đổi hiện đang được thực hiện của dự án . Ảnh chụp nhanh đã cam kết có thể được coi là phiên bản “an toàn” của một dự án—Git sẽ không bao giờ thay đổi chúng trừ khi bạn yêu cầu nó một cách rõ ràng.

Làm cách nào để sử dụng các lệnh git trong tập lệnh Python?

Hãy xem từng thao tác Git Cơ bản này trong Python GitPython như thế nào. .
Khởi tạo Git. Để bắt đầu là tạo repo Git trần trong thư mục đã chỉ định. .
Bản sao Git. .
Kiểm tra Git. .
Tìm nạp Git. .
Thêm Git. .
Cam kết Git. .
Đẩy Git. .
Kéo Git

GitPython dùng để làm gì?

GitPython là thư viện python được sử dụng để tương tác với kho git . Nó là một mô-đun trong python được sử dụng để truy cập kho git của chúng tôi. Nó cung cấp sự trừu tượng của các đối tượng git để dễ dàng truy cập dữ liệu kho lưu trữ và ngoài ra cho phép bạn truy cập kho git trực tiếp hơn bằng cách sử dụng triển khai python thuần túy.

Làm cách nào để kiểm tra trạng thái git bằng Python?

Trong "Bắt đầu chương trình", Chương trình/tập lệnh phải là trình thông dịch python để sử dụng, e. g. python và "Thêm đối số" phải là -m git_status_checker (để chạy git-status-checker), tiếp theo là các đối số git-status-checker cần thiết . g. -m git_status_checker --wait --ignore-untracked "~/Dev" "~/Documents/Projects" thành.