tôi sẽ đoán đây là kịch bản của bạn:
$ git checkout ProductsAndContents
Switched to branch 'ProductsAndContents'
Chi nhánh ProductsAndContents
chứa các tập tin tests/unit/src/models/BrandTests.js
, vì vậy trên checkout
tạo ra nó và/hoặc đảm bảo nó được cập nhật với các cụ cam kết yêu cầu.
$ git status
# On branch ProductsAndContents
nothing to commit (working directory clean)
Bạn chưa thực hiện bất kỳ thay đổi nào và bắt đầu với thư mục hoạt động sạch sẽ, vì vậy điều này là tốt.
$ git checkout master
Switched to branch 'master'
Điều này đảm bảo tất cả các tệp có trong cam kết mới nhất trên master
đều được cập nhật trong thư mục làm việc. Tuy nhiên, nó không xóa hoặc cập nhật các tệp không có trong master
hoặc bị bỏ qua. Ở đây tôi giả định master
vì bất kỳ lý do gì hiện không bao gồm các tập tin trong câu hỏi.
$ git status
# On branch master
nothing to commit (working directory clean)
Một lần nữa, bạn đã không thực hiện sửa đổi. Thực tế là các tập tin trong câu hỏi không được đề cập ở đây như là một tập tin untracked có thể có nghĩa là nó bị bỏ qua (hoặc trong .gitignore
hoặc trong .git/info/exclude
). master
không chứa tệp để nó không lo ngại rằng nó tồn tại.
$ git merge ProductsAndContents
error: Your local changes to the following files would be overwritten by merge:
tests/unit/src/models/BrandTests.js
Please, commit your changes or stash them before you can merge.
Aborting
Ở đây, nỗ lực của bạn để hợp nhất vào chi nhánh khác muốn giới thiệu tệp mà master
hiện không có, thường là tốt. Tuy nhiên, tệp đó tồn tại trong thư mục làm việc của bạn và git
không muốn thùng rác thứ gì đó mà nó không chắc chắn được lưu giữ trong kho lưu trữ. Như được đề xuất ở nơi khác, bạn có thể (giả sử bạn biết nó an toàn) chỉ cần xóa tệp đó và thử lại quá trình hợp nhất.
Với thông tin bạn đã cung cấp, tôi không chắc chắn 100% đó là những gì bạn có ở đây; bạn có thể chạy hai lệnh dưới đây để kiểm tra tình trạng đó, mặc dù:
git ls-files master -- tests/unit/src/models/BrandTests.js
git ls-files ProductsAndContents -- tests/unit/src/models/BrandTests.js
Nếu tôi đoán là đúng, lệnh đầu tiên sẽ không hiển thị các tập tin tồn tại, trong khi ý chí thứ hai. Sau đó kiểm tra .gitignore
và .git/info/exclude
để xem liệu nó có bị bỏ qua hay không (đối với .gitignore
, bạn có thể cần phải kiểm tra phiên bản tồn tại trên từng nhánh của hai nhánh).
Bạn bằng cách nào đó đã quản lý tệp đó trong tệp '.git/info/exclude' hoặc tệp' .gitignore'? –
Tùy chọn cấu hình trong [answer] (http://stackoverflow.com/a/12167041/166732) có giúp ích không? – asm
Xin chào Andrew, thiết lập 'core.trustctime' thành false dường như đã thực hiện nó. Cảm ơn bạn đã chỉ cho tôi đúng hướng :) –