Điều đó có nghĩa là Mercurial không chắc chắn về những việc cần làm. Bạn có tệp có nội dung something
trong bản sao làm việc. Tệp không phải là phiên bản được kiểm soát, vì vậy Mercurial thường sẽ để nó một mình khi bạn cập nhật. Tuy nhiên, sửa đổi bạn đang cập nhật thành cũng có tệp có cùng tên và nội dung khác từ số something
bạn đã có trong tệp.
Bạn có thể nhận vấn đề này nếu bạn làm
$ hg init
$ echo "a file" > a
$ hg add a
$ hg commit -m "added a"
$ echo "b file" > b
$ hg add b
$ hg commit -m "added b"
Bây giờ bạn có hai phiên bản, mới nhất có file a
và b
. Nếu bạn cập nhật trở lại với phiên bản đầu tiên và tạo ra một tập tin khác nhau b
, sau đó bạn sẽ có được rắc rối:
$ hg update 0
$ echo "other b file" > b
$ hg update
abort: untracked file in working directory differs from file in requested
revision: 'b'
Các giải pháp bình thường là cam kết trước cập nhật. Bạn thường không nên cập nhật với một bản sao làm việc bẩn ("bẩn" có nghĩa là hg status
không có sản phẩm nào). Mercurial không hỗ trợ các bản cập nhật như vậy, nhưng bạn chỉ nên sử dụng chúng nếu bạn biết bạn đang làm gì.
Vì vậy, để tiếp tục ví dụ trên chúng ta có thể hoặc là cam kết mới b
và sau đó hợp nhất:
$ hg add b
$ hg commit -m "added new b"
$ hg merge
này cho một cuộc xung đột trong b
kể từ khi hai phiên bản chứa b file
và other b file
, tương ứng. Giải quyết xung đột và cam kết:
$ hg commit -m "merged two bs"
Cách khác là xóa tệp khỏi bản sao làm việc. Đó là những gì tôi sẽ làm trong trường hợp của bạn:.DS_Store
tệp không được theo dõi ngay từ đầu. Chúng lưu trữ một số thông tin thư mục trên Mac OS X và đây không phải là một phần của mã nguồn của bạn. Vì vậy, bạn làm
$ rm .DS_Store
$ hg update
Bản cập nhật khôi phục tệp .DS_Store
. Bây giờ bạn muốn nói với Mercurial rằng nó nên ngừng theo dõi các tập tin:
$ hg forget .DS_Store
và bạn cũng muốn nói với Mercurial để bỏ qua tập tin như vậy từ giờ trở đi:
$ echo "syntax: glob" >> .hgignore
$ echo ".DS_Store" >> .hgignore
$ hg commit -m "removed .DS_Store file, ignored from now on"
cảm ơn bạn rất nhiều vì câu trả lời chi tiết như vậy ! – Andrew