Cắt tỉa Git là gì?


86

Tôi đã vô tình cắt tỉa một số nhánh ở xa và tôi thực sự không biết hậu quả của việc này là gì (Tôi đã nhấp vào nút "Tỉa các nhánh từ xa" trong Git Extensions, nghĩ rằng nó sẽ xóa một nhánh ở xa).

Tài liệu chính thức cho biết "git-trimne - Tỉa tất cả các đối tượng không thể truy cập từ cơ sở dữ liệu đối tượng". Tôi không thực sự hiểu điều này có nghĩa là gì. Tôi đoán điều này có thể đã loại bỏ các nhánh đã hợp nhất nhưng tôi không thực sự chắc chắn.


Có thể có bản sao của stackoverflow.com/questions/4040717/…
Raghavan

1
Cũng có thể đáng xem git gc: git-scm.com/docs/git-prune .
kovac

Câu trả lời:


91

"Tỉa các nhánh từ xa" trong Git Extensions thực thi git remote prunelệnh, lệnh này sẽ xóa các nhánh theo dõi từ xa cục bộ của bạn nơi nhánh không còn tồn tại trên điều khiển từ xa.

Xem tại đây: https://git-scm.com/docs/git-remote#git-remote-empruneem


vì vậy về cơ bản nó ưu tiên cho điều khiển từ xa của bạn và điều chỉnh cục bộ của bạn để phù hợp với các chi nhánh từ xa của bạn?
Mật ong,

3
@Honey không, nó chỉ loại bỏ các nhánh theo dõi cục bộ từ xa , các nhánh bình thường không bị đụng chạm.
1615903

32

Đây chỉ là rác thu thập các chi nhánh của bạn.

Điều đó có nghĩa là, nếu một đối tượng (một cam kết) không thể được tiếp cận trong bất kỳ tổ tiên nào của nhánh của bạn, nó sẽ bị xóa đối với cơ sở dữ liệu git và như vậy không thể tiếp cận được nữa.

Điều này chỉ làm sạch một chút kho lưu trữ git và làm cho nó nhẹ hơn.


4
Theo tài liệu, đối với các nhiệm vụ trông nhà như thế này, có thể tốt hơn là thực hiện một git gcthay vì một git pruneviệc về cơ bản cũng sẽ thực hiện việc cắt tỉa git.
kovac

1
Phản đối: câu trả lời này (và câu hỏi cho vấn đề đó) gây nhầm lẫn git prunegit remote prune. Chúng không giống nhau, cái sau thực sự xóa các nhánh không còn tồn tại trên điều khiển từ xa trong khi vẫn giữ nguyên các nhánh cục bộ.
JBert

12

Điều quan trọng là bạn phải biết rằng mận khô đã bị ràng buộc lại . Không phải ai cũng biết rằng bạn có thể liên kết repo cục bộ của mình với nhiều điều khiển từ xa. Ví dụ, nó có ích khi bạn làm việc với một dự án mã nguồn mở và được thực thi để làm việc thông qua fork.

Vì vậy, lệnh tỉa yêu cầu một tên repo. Trong hầu hết các trường hợp là như vậy git remote prune origin, nhưng bạn có thể gọi bất cứ thứ gì repo của mình, không nhất thiết phải như vậy origin.


2

Có thể có các nhánh tính năng từ xa bị xóa sau khi chúng tôi hợp nhất chúng thành chính. Chúng tôi có thể đã xóa các nhánh tính năng như một cách để dọn dẹp. Nhưng nếu bạn đã kiểm tra nhánh đã xóa trong hệ thống cục bộ và đặt ở trạng thái là theo dõi, git pull sẽ không xóa các nhánh cục bộ đó (vì chúng đã bị ngắt kết nối khỏi máy chủ). Để dọn dẹp loại nhánh mồ côi cục bộ đó, git prunelệnh sẽ có ích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.