2016-08-04 22 views
5

Tôi đã tìm kiếm điều này rất nhiều, nhưng không rõ liệu git có phải là công cụ chính xác cho những gì tôi muốn làm hay không. Khi tôi viết mã, tôi muốn tạo các ảnh chụp nhanh của toàn bộ kho lưu trữ để kiểm tra các công cụ ở những nơi khác nhau. Tôi quên nơi tôi thêm/chỉnh sửa mã, do đó, một điều tốt sẽ là "hoàn nguyên" toàn bộ kho lưu trữ về trạng thái ban đầu. Và những ảnh chụp nhanh này cần phải được duy trì hoặc xóa vĩnh viễn, vì đây chỉ là các thử nghiệm và thử nghiệm.Tạo ảnh chụp nhanh nhanh chóng của kho lưu trữ (git?)

Ảnh chụp nhanh VM chậm và ngắt kết nối. Tôi đã suy nghĩ về Git và các tính năng phân nhánh của nó. NHƯNG xa như tôi có thể thấy git giữ tất cả mọi thứ mãi mãi, trừ khi một số lệnh đặc biệt nguy hiểm được đưa ra để xóa các công cụ.

Điều tôi muốn: Cam kết nhiều ảnh chụp nhanh, có thể chuyển đổi giữa các ảnh chụp nhanh và xóa vĩnh viễn chúng khi tôi đẩy mọi thứ vào kho lưu trữ trực tuyến. Tôi không muốn lãng phí không gian trên repo vì mã vô dụng, với những cam kết vô dụng làm lộn xộn quan điểm.

Đây có thể là một câu hỏi noob, rất tiếc mọi hướng dẫn trên internet đều cho biết nhiều lệnh và khái niệm có ít trường hợp sử dụng thực tế.

Cảm ơn mọi người

Trả lời

2

Khi tôi viết mã, tôi muốn tạo ảnh chụp nhanh nhanh chóng của toàn bộ kho để kiểm tra ở nhiều nơi khác nhau.

Có, git rất tốt cho điều đó.

Và những ảnh chụp nhanh này cần phải được duy trì hoặc xóa vĩnh viễn, vì đây chỉ là các thử nghiệm và thử nghiệm.

Chi nhánh sẽ làm điều đó cho bạn.

như xa như tôi có thể nhìn thấy git giữ mọi thứ mãi mãi,

Không, đó là không đúng sự thật.Nó chỉ giữ tất cả các cam kết có một chi nhánh hoặc thẻ liên kết với chúng, cộng với tất cả mọi thứ dẫn trực tiếp đến chúng. Các cam kết khác mà bạn không thể truy cập thông qua bất kỳ chi nhánh hoặc thẻ nào nữa (sau một thời gian) sẽ tự động bị xóa thông qua bộ sưu tập rác.

Điều tôi muốn: Cam kết nhiều ảnh chụp nhanh, có thể chuyển đổi giữa chúng và xóa vĩnh viễn chúng khi tôi đẩy mọi thứ vào kho lưu trữ trực tuyến.

Có, chi nhánh git.

Tôi không muốn lãng phí dung lượng trên repo vì mã vô dụng, với các cam kết vô dụng làm lộn xộn chế độ xem.

Yup, chúng sẽ biến mất; và trừ khi chúng ta đang nói về các dự án có kích thước Linux ở đây, không gian không phải là vấn đề gì cả.

Đây có thể là câu hỏi noob, rất tiếc mọi hướng dẫn trên internet đều cho biết nhiều lệnh và khái niệm có ít trường hợp sử dụng thực tế.

http://gitready.com/beginner/2009/02/17/how-git-stores-your-data.html là phần giới thiệu tuyệt vời; https://www.jayway.com/2013/03/03/git-is-a-purely-functional-data-structure/ có rất nhiều chi tiết (đọc sau liên kết đầu tiên, có thể chỉ là quá mức cần thiết cho bạn).

+0

Bạn thật tuyệt vời. Vâng, tôi nghĩ rất nhiều về các chi nhánh, tôi chỉ không muốn một mớ hỗn độn như SVN. Vì vậy, các cam kết sẽ bị xóa nếu không có thẻ nào được liên kết, đúng không? Tôi đọc về bộ sưu tập rác nhưng không thể hiểu được nó hoạt động như thế nào. – Mc128k

+1

Nó hoạt động phía sau hậu trường. Tôi biết những gì bạn có nghĩa là, nếu bạn đang sử dụng để SVN sau đó một số lo sợ về chi nhánh là dễ hiểu; chúng hoàn toàn khác nhau (sạch sẽ, dễ dàng, nhẹ) trong 'git'. – AnoE

1

Git nghe như một sự lựa chọn tuyệt vời cho trường hợp sử dụng của bạn. Không giống như nhiều hệ thống điều khiển phiên bản khác (VCS), Git là kho lưu trữ hoặc dự án dựa trên VCS. Khi bạn thực hiện cam kết trong Git, về bản chất bạn sẽ chụp nhanh toàn bộ dự án của mình, bao gồm mọi tệp. Điều này trái ngược với các VCS khác như Perforce, trong đó mỗi tệp đều có lịch sử riêng. Do đó, thật dễ dàng để di chuyển xung quanh dự án của bạn từ trạng thái này sang trạng thái tiếp theo trong Git.

Một điều thú vị khác về Git là nó chỉ lưu trữ diff từ một cam kết này sang cam kết tiếp theo (ít nhất là khái niệm, trong thực tế nó vẫn tồn tại một cấu trúc cây). Vì vậy, nếu bạn chỉ thay đổi một tệp trong dự án của mình từ một cam kết sang kế tiếp, thì Git sẽ chỉ ghi lại thay đổi vào dự án của bạn. Điều này làm cho Git gọn gàng và có ý nghĩa, và không cần phải xóa bất cứ điều gì bạn có thể coi là siêu liên tục; Git lưu trữ lượng thông tin nhỏ nhất cần thiết để hoàn thành công việc. Về mặt khái niệm, bạn có thể nghĩ về Git khi chụp một ảnh chụp toàn cảnh toàn bộ dự án của bạn trên kho lưu trữ và sau đó chỉ ghi lại các thay đổi khi chúng xảy ra.

+0

Mô tả của bạn về 'diff' là gây hiểu nhầm - đó không phải là cách' git' hoạt động nội bộ. – AnoE

+0

@AnoE Nhận xét của bạn là gây hiểu nhầm, bởi vì bạn làm cho nó âm thanh mà Git không _not_ lưu trữ sự khác biệt của các tập tin thay đổi trong mỗi cam kết, khi điều này là chính xác những gì nó làm. –

+0

http://stackoverflow.com/questions/10398744/does-git-store-diff-information-in-commit-objects – AnoE

Các vấn đề liên quan