Sự khác biệt giữa hg quên và hg loại bỏ là gì?


313

Tôi muốn mercurial xóa một số tệp khỏi trạng thái hiện tại của kho lưu trữ. Tuy nhiên, tôi muốn các tập tin tồn tại trong lịch sử trước đó.

Làm thế nào forgetremovekhác nhau, và họ có thể làm những gì tôi muốn?


27
Đừng lo lắng, bạn không thể xóa tệp khỏi lịch sử trước đó trong Mercurial - lịch sử thường không thay đổi trừ khi bạn bắt đầu sử dụng tiện ích mở rộng.
Martin Geisler

Câu trả lời:


348

' hg forget' Chỉ là viết tắt cho ' hg remove -Af'. Từ hg removetrợ giúp '':

... và -Af có thể được sử dụng để xóa các tệp khỏi phiên bản tiếp theo mà không xóa chúng khỏi thư mục làm việc.

Dòng dưới cùng: ' remove' xóa tệp khỏi bản sao làm việc của bạn trên đĩa (trừ khi bạn sử dụng -Af) và ' forget' không.


7
"Hg quên" được giới thiệu lại trong Mercurial 1.3 như một cách dễ dàng hơn để thực hiện "hg remove -Af". Nó lên lịch để xóa tệp mà không xóa nó khỏi bản sao làm việc.
Martin Geisler

5
Vui mừng khi nghe nó. 'remove -Af' (và toàn bộ bảng tùy chọn trên trang trợ giúp 'remove') là / điên rồ.
Ry4an Brase

32
@ Ry4an: Nghiêm túc mà nói, thật nực cười. Tôi đã đóng góp bản vá giới thiệu lại 'quên'. Khi tôi làm nó, tôi nhận ra rằng -Af hoàn toàn có ý nghĩa trong mã nhưng từ quan điểm của người dùng, nó hoàn toàn vô lý.
Steve Losh

10
Heh, đó là những gì tuyệt vời về đồng bóng - mọi người đang suy nghĩ tích cực và lặp đi lặp lại về những gì có ý nghĩa từ quan điểm của người dùng. Cảm ơn đã sửa cái đó.
Ry4an Brase

9
Tập tin cấu hình xây dựng cục bộ hoặc tương tự? Đường dẫn đến các công cụ cục bộ khác nhau từ hệ thống này đến hệ thống khác? Vô tình thêm một tệp nhật ký mà bạn không muốn trong kiểm soát nguồn, nhưng muốn lưu? Tôi đoán nó xảy ra.
Ry4an Brase

42

Cách tốt nhất để đưa là hg forgetgiống hệt nhau để hg remove trừ mà nó để lại các file sau trong bạn bản sao làm việc. Các tệp bị bỏ lại dưới dạng các tệp không bị theo dõi và bây giờ có thể tùy ý bỏ qua với một mẫu trong .hgignore.

Nói cách khác, tôi không thể biết bạn đã sử dụng hg forgethay hg removekhi tôi rút từ bạn. Một tập tin mà bạn chạy hg forgettrên sẽ bị xóa khi tôi nâng cấp lên changeset đó - cũng giống như khi bạn đã sử dụng hg removeđể thay thế.


27

Từ tài liệu này, rõ ràng bạn có thể sử dụng một trong hai lệnh để giữ tệp trong lịch sử dự án. Có vẻ như bạn muốn xóa, vì nó cũng xóa tệp khỏi thư mục làm việc.

Từ cuốn sách Mercurial tại http://hgbook.red-bean.com/read/ :

Xóa một tập tin không ảnh hưởng đến lịch sử của nó. Điều quan trọng là phải hiểu rằng việc xóa một tệp chỉ có hai tác dụng. Nó loại bỏ phiên bản hiện tại của tập tin khỏi thư mục làm việc. Nó ngăn Mercurial theo dõi các thay đổi đối với tệp, kể từ thời điểm cam kết tiếp theo. Loại bỏ một tập tin không làm thay đổi lịch sử của tập tin.

Trang người đàn ông hg (1) nói điều này về việc quên:

Đánh dấu các tệp đã chỉ định để chúng sẽ không còn được theo dõi sau lần xác nhận tiếp theo. Điều này chỉ xóa các tệp khỏi nhánh hiện tại, không phải trong toàn bộ lịch sử dự án và nó không xóa chúng khỏi thư mục làm việc.

Và điều này về loại bỏ:

Lịch trình các tập tin được chỉ định để loại bỏ khỏi kho lưu trữ. Điều này chỉ loại bỏ các tập tin từ chi nhánh hiện tại, không phải từ toàn bộ lịch sử dự án.


3

Nếu bạn sử dụng "hg remove b"đối với một tệp có trạng thái "A", có nghĩa là nó đã được thêm nhưng không được cam kết, Mercurial sẽ trả lời:

  not removing b: file has been marked for add (use forget to undo)

Phản hồi này là một giải thích rất rõ ràng về sự khác biệt giữa loại bỏ và quên.

Hiểu biết của tôi "hg forget"là để hoàn tác một tệp được thêm nhưng không được cam kết để nó không bị theo dõi bởi kiểm soát phiên bản; trong khi đó "hg remove"là để lấy ra một tập tin cam kết từ kiểm soát phiên bản.

Đây chủ đề có một ví dụ cho việc sử dụng hg removechống lại các file của 7 loại khác nhau của trạng thái.


2

Một tập tin có thể được theo dõi hoặc không, bạn sử dụng hg add để theo dõi một tập tin và hg xóa hoặc hg quên để theo dõi nó. Sử dụng hg remove mà không có cờ sẽ xóa cả tập tin và bỏ theo dõi nó, hg quên sẽ chỉ đơn giản là bỏ theo dõi nó mà không xóa nó.


3
Tôi không biết lý do tại sao bạn cảm thấy cần phải thêm trích dẫn này khi bản thân người đàn ông đã theo đuổi, nhưng này, bất cứ điều gì nổi lên thuyền của bạn.
Nathan Tuggy
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.