GitPython thêm tất cả và cam kết
Khác biệt là một chức năng nhận hai tập dữ liệu đầu vào và xuất các thay đổi giữa chúng. 7 là một lệnh Git đa dụng, khi được thực thi sẽ chạy một hàm tìm khác biệt trên các nguồn dữ liệu Git. Các nguồn dữ liệu này có thể là các xác nhận, nhánh, tệp, v.v. Tài liệu này sẽ thảo luận về các lệnh gọi phổ biến của 7 và các mẫu quy trình công việc khác nhau. Lệnh 7 thường được sử dụng cùng với 0 và 1 để phân tích trạng thái hiện tại của repo Git Show
Đọc khác biệt. đầu raĐịnh dạng đầu ra thôCác ví dụ sau sẽ được thực thi trong một repo đơn giản. Repo được tạo bằng các lệnh bên dưới
Nếu chúng tôi thực hiện 7 tại thời điểm này, sẽ không có đầu ra. Đây là hành vi dự kiến vì không có thay đổi trong repo thành khác. Khi repo được tạo và chúng tôi đã thêm tệp 3, chúng tôi có thể thay đổi nội dung của tệp để bắt đầu thử nghiệm với đầu ra khác
Thực hiện lệnh này sẽ thay đổi nội dung của tệp 3. Sau khi sửa đổi, chúng tôi có thể xem khác biệt và phân tích đầu ra. Bây giờ thực thi 7 sẽ tạo ra đầu ra sau
Bây giờ chúng ta hãy kiểm tra phân tích chi tiết hơn về đầu ra khác 1. Đầu vào so sánh 2Dòng này hiển thị các nguồn đầu vào của sự khác biệt. Chúng ta có thể thấy rằng 6 và 7 đã được chuyển đến diff2. Metadata 5Dòng này hiển thị một số siêu dữ liệu Git nội bộ. Bạn rất có thể sẽ không cần thông tin này. Các số trong đầu ra này tương ứng với mã định danh băm phiên bản đối tượng Git 3. Dấu hiệu thay đổi 6Những dòng này là chú giải gán ký hiệu cho từng nguồn đầu vào khác. Trong trường hợp này, các thay đổi từ 6 được đánh dấu bằng 9 và các thay đổi từ 7 được đánh dấu bằng ký hiệu 214. khối khác nhauĐầu ra khác biệt còn lại là danh sách các 'khối' khác biệt. Khác biệt chỉ hiển thị các phần của tệp có thay đổi. Trong ví dụ hiện tại của chúng tôi, chúng tôi chỉ có một đoạn khi chúng tôi đang làm việc với một kịch bản đơn giản. Các khối có ngữ nghĩa đầu ra chi tiết của riêng chúng 1Dòng đầu tiên là tiêu đề chunk. Mỗi đoạn được thêm vào trước bởi một tiêu đề được đặt trong các ký hiệu 22. Nội dung của tiêu đề là bản tóm tắt các thay đổi được thực hiện đối với tệp. Trong ví dụ đơn giản của chúng tôi, chúng tôi có -1 +1 dòng có nghĩa là một đã thay đổi. Trong một sự khác biệt thực tế hơn, bạn sẽ thấy một tiêu đề nhưTrong ví dụ tiêu đề này, 6 dòng đã được trích xuất bắt đầu từ dòng số 34. Ngoài ra, 8 dòng đã được thêm vào bắt đầu từ dòng số 34 Nội dung còn lại của đoạn khác hiển thị những thay đổi gần đây. Mỗi dòng đã thay đổi được thêm vào trước một ký hiệu 23 hoặc 24 cho biết các thay đổi đến từ phiên bản nào của đầu vào khác. Như chúng ta đã thảo luận trước đây, 24 biểu thị những thay đổi từ 6 và + biểu thị những thay đổi từ 7Làm nổi bật các thay đổi1. $:> echo "this is a diff example" > diff_test.txt28 7 cũng có một chế độ đặc biệt để làm nổi bật các thay đổi với độ chi tiết tốt hơn nhiều. 50. Chế độ này mã hóa các dòng được thêm và xóa bằng khoảng trắng và sau đó phân biệt các dòng đó 1Bây giờ đầu ra chỉ hiển thị các từ được mã hóa màu đã thay đổi 2. $:> echo "this is a diff example" > diff_test.txt51Nếu bạn sao chép nguồn git, bạn sẽ tìm thấy một thư mục con có tên contrib. Nó chứa một loạt các công cụ liên quan đến git và các bit và phần thú vị khác chưa được nâng cấp lên git core. Một trong số đó là tập lệnh Perl có tên là diff-highlight. Diff-highlight ghép nối các dòng phù hợp của đầu ra khác biệt và làm nổi bật các đoạn từ phụ đã thay đổi 3Bây giờ chúng tôi đã giảm sự khác biệt của mình xuống mức thay đổi nhỏ nhất có thể Các tập tin nhị phân khác nhauNgoài các tiện ích tệp văn bản mà chúng tôi đã trình bày cho đến nay, 7 có thể chạy trên các tệp nhị phân. Thật không may, đầu ra mặc định không hữu ích lắm 5Git có một tính năng cho phép bạn chỉ định lệnh trình bao để chuyển đổi nội dung của tệp nhị phân thành văn bản trước khi thực hiện tìm khác biệt. Nó đòi hỏi một chút thiết lập mặc dù. Trước tiên, bạn cần chỉ định bộ lọc textconv mô tả cách chuyển đổi một loại nhị phân nhất định thành văn bản. Chúng tôi đang sử dụng một tiện ích đơn giản có tên là pdftohtml (có sẵn qua homebrew) để chuyển đổi các tệp PDF của tôi thành HTML mà con người có thể đọc được. Bạn có thể thiết lập điều này cho một kho lưu trữ duy nhất bằng cách chỉnh sửa tệp 53 của mình hoặc trên toàn cầu bằng cách chỉnh sửa 54 0Sau đó, tất cả những gì bạn cần làm là liên kết một hoặc nhiều mẫu tệp với bộ lọc pdfconv của chúng tôi. Bạn có thể làm điều này bằng cách tạo một tệp 55 trong thư mục gốc của kho lưu trữ của bạnSau khi được định cấu hình, trước tiên, 7 sẽ chạy tệp nhị phân thông qua tập lệnh chuyển đổi được định cấu hình và tìm khác biệt đầu ra của bộ chuyển đổi. Ví dụ, kỹ thuật tương tự có thể được áp dụng để nhận các khác biệt hữu ích từ tất cả các loại tệp nhị phân. zip, lọ và các tài liệu lưu trữ khác. sử dụng 57 (hoặc tương tự) thay cho pdf2html sẽ hiển thị cho bạn các đường dẫn đã được thêm hoặc xóa giữa các hình ảnh xác nhận. exiv2 có thể được sử dụng để hiển thị các thay đổi siêu dữ liệu, chẳng hạn như tài liệu kích thước hình ảnh. công cụ chuyển đổi tồn tại để chuyển đổi. không,. doc và các định dạng tài liệu khác thành văn bản thuần túy. Trong một tình huống khó khăn, các chuỗi thường sẽ hoạt động đối với các tệp nhị phân không tồn tại trình chuyển đổi chính thứcSo sánh tệp. tập tin git diffLệnh 7 có thể được chuyển qua tùy chọn đường dẫn tệp rõ ràng. Khi một đường dẫn tệp được chuyển đến 7, thao tác tìm khác biệt sẽ được đặt trong phạm vi tệp đã chỉ định. Các ví dụ dưới đây chứng minh cách sử dụng này 1Ví dụ này nằm trong phạm vi 60 khi được gọi, nó sẽ so sánh các thay đổi cụ thể trong thư mục làm việc, với chỉ mục, hiển thị các thay đổi chưa được sắp xếp. Theo mặc định, 7 sẽ thực hiện so sánh với 62. Bỏ qua 62 trong ví dụ trên 64 cũng có tác dụng tương tự 2Khi 7 được gọi với tùy chọn 66, khác biệt sẽ so sánh các thay đổi theo giai đoạn với kho lưu trữ cục bộ. Tùy chọn 66 đồng nghĩa với 68So sánh tất cả các thay đổiGọi 7 mà không có đường dẫn tệp sẽ so sánh các thay đổi trên toàn bộ kho lưu trữ. Ở trên, các ví dụ cụ thể về tệp, có thể được gọi mà không cần đối số 60 và có cùng kết quả đầu ra trên tất cả các tệp trong kho lưu trữ cục bộCác thay đổi kể từ lần xác nhận cuối cùngTheo mặc định, 7 sẽ hiển thị cho bạn mọi thay đổi chưa được cam kết kể từ lần cam kết cuối cùngSo sánh các tệp giữa hai lần xác nhận khác nhau 7 có thể được thông qua Git refs để cam kết khác. Một số ví dụ về giới thiệu là, 62, thẻ và tên chi nhánh. Mọi cam kết trong Git đều có ID cam kết mà bạn có thể nhận được khi thực thi 14. Bạn cũng có thể chuyển ID cam kết này cho 7 3So sánh các chi nhánhSo sánh hai nhánhCác nhánh được so sánh giống như tất cả các đầu vào tham chiếu khác với 7 4Ví dụ này giới thiệu toán tử dấu chấm. Hai dấu chấm trong ví dụ này cho biết đầu vào khác là mẹo của cả hai nhánh. Hiệu ứng tương tự xảy ra nếu các dấu chấm bị bỏ qua và một khoảng trắng được sử dụng giữa các nhánh. Ngoài ra, có một toán tử ba chấm 5Toán tử ba dấu chấm khởi tạo khác biệt bằng cách thay đổi tham số đầu vào đầu tiên 17. Nó thay đổi 17 thành một tham chiếu của cam kết tổ tiên chung được chia sẻ giữa hai đầu vào khác, tổ tiên được chia sẻ của 17 và nhánh tính năng khác. Tham số đầu vào tham số cuối cùng không thay đổi như đầu nhánh của tính năng khácSo sánh các tập tin từ hai chi nhánhĐể so sánh một tệp cụ thể giữa các nhánh, hãy chuyển đường dẫn của tệp làm đối số thứ ba cho 7 6Tóm lượcTrang này thảo luận về quy trình phân biệt Git và lệnh 7. Chúng tôi đã thảo luận về cách đọc đầu ra 7 và các dữ liệu khác nhau có trong đầu ra. Các ví dụ được cung cấp về cách thay đổi đầu ra 7 bằng tô sáng và màu sắc. Chúng tôi đã thảo luận về các chiến lược khác nhau, chẳng hạn như cách phân biệt các tệp trong các nhánh và các cam kết cụ thể. Ngoài lệnh 7, chúng tôi cũng đã sử dụng 1 và 16 |