2012-07-16 38 views
8

Tôi có kho lưu trữ git nhỏ trên máy tính xách tay của mình. Tôi vừa cam kết các thay đổi và kiểm tra rằng tôi không có gì để cam kết - mọi tệp được dàn dựng và sửa đổi đã được cam kết.Tại sao sau khi sao chép kho git sang một thư mục khác, tôi đã sửa đổi các tệp?

Sau đó tôi đã sao chép tất cả các tệp từ repo này sang vị trí khác và bùng nổ! Tôi có những thay đổi không được cam kết.

Tôi tin rằng tôi thiếu một số quy tắc cơ bản về git. Bất cứ ai có thể đề nghị tôi về điều đó?

+0

Bạn có dự định bản sao mới là kho lưu trữ git không? – bluesman

+1

Bạn nên bao gồm thông tin mà repo gốc đã có trên Windows và bản sao trên Ubuntu. Điều đó làm cho một sự khác biệt lớn. Với thông tin này, tôi tin rằng câu trả lời của giáo viên là chính xác. – suvayu

+0

'Git diff' có cho thấy sự khác biệt thực sự không? Hay bạn chỉ thấy 'git status' nói rằng bạn có thay đổi?Bạn có thể chạy vào thực tế là chỉ mục lưu trữ một số siêu dữ liệu về mỗi tệp - bản sao có các dấu thời gian khác với tệp gốc, vì vậy, git' có thể báo cáo rằng các tệp đó không còn khớp với những gì mà chỉ mục nghĩ là ở đó, mặc dù nội dung các tệp có thể vẫn giống nhau. – twalberg

Trả lời

6

Tệp của bạn trên cửa sổ có thể có dòng kết thúc dòng trả về dòng vận chuyển và bạn có thể có lõi.autocrlf đúng trên hộp cửa sổ của bạn. Đừng sao chép nó như thế giữa các nền tảng khác nhau. Thay vào đó tạo một kho lưu trữ git mới trên hộp linux và kéo từ hộp Windows. Bạn có thể sử dụng git bundle hoặc git daemon trên máy Windows để hiển thị kho lưu trữ. Hoặc bạn có thể tạo một repo trần trên hộp linux và git push --mirror với nó từ máy Windows sau đó sao chép mà bạn muốn phiên bản cuối cùng kết thúc.

Hoặc - rất có khả năng bạn đã có thể thực hiện một số git reset --hard HEAD và sửa nó trên hộp linux như hiện tại. Có thể bạn nên xóa mọi thứ ngoại trừ thư mục .git trước để đảm bảo một cây làm việc hoàn toàn sạch sẽ.

1

Quyền truy cập giữa các thư mục có thay đổi không? Git sẽ đăng ký thay đổi quyền.

+1

Vâng, tôi không biết chính xác những gì bạn có nghĩa là nhưng tôi đã sao chép các tập tin từ máy Win7 để Ubuntu nếu có vấn đề. – Patryk

+0

Quyền truy cập tệp nào theo dõi? [Câu hỏi này] (http://stackoverflow.com/questions/1071241/how-does-git-handle-folder-permission) cho thấy nó không. Thông tin của bạn đến từ đâu? – simont

+0

Nó theo dõi các bit thực thi mà tôi nghĩ rằng có thể được thiết lập hoặc bỏ đặt tự động nếu bạn truy cập hệ thống tập tin Windows từ Ubuntu/linux – leighman

1

Sao chép từ Windows sang Linux giới thiệu sự khác biệt về quyền đối với tệp, những thay đổi này cũng được theo dõi bởi git.

1

Tôi đang đối mặt với cùng một vấn đề. Tuy nhiên tôi đã sao chép các tập tin từ hệ thống máy chủ Linux sang một hệ thống khách Virtual Box. Một số liên kết bị xóa, trong khi một số quyền đối với tệp đã thay đổi, tôi có thể sửa lỗi bằng cách thực hiện git config core.filemode false.

9

Những gì tôi đã làm, chạy

git diff | grep -B 2 @@ | grep +++ 

để có được các tập tin thực sự đã thay đổi, sau đó làm trở lại trên tất cả những người khác

+0

Làm việc cho tôi. Hiển thị các tệp thực sự đã thay đổi. Sau đó, kiểm tra những cái được liệt kê thông qua trạng thái git không xuất hiện trong git diff –

0

Nếu bạn không có gì trên stash để mất, làm:

git checkout .

Thao tác này sẽ hoàn nguyên cây đang hoạt động về cam kết trước đây của bạn

0

Nếu u có nhiều nhánh và tất cả thay đổi được đẩy, thì giải pháp này có thể hoạt động

Chỉ cần thêm và cam kết tất cả thay đổi bạn thấy, với nhánh hiện tại (ví dụ như master). Sau đó, thanh toán chi nhánh khác (nói kiểm tra) Xóa chi nhánh chính cục bộ (với tùy chọn -D). Kéo nhánh chính từ git

Xong ..!

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