2013-07-14 26 views
7

Chạy Windows 7 với Git được cài đặt từ Git-1.8.3-preview20130601.exe.git checkout không đặt lại tệp

Tôi có một tệp đã sửa đổi trong thư mục làm việc của mình, tôi muốn khôi phục nó về trạng thái của nó ở lần commit cuối cùng. Tôi đã thử các lời gọi khác nhau của git checkout, nhưng tệp đã sửa đổi vẫn còn trong thư mục làm việc của tôi. Ví dụ:

[C:\Work\BitBucket\proj1] 14:32:45>git status 
On branch work2 
Your branch is behind 'origin/work2' by 9 commits, and can be fast-forwarded. 
    (use "git pull" to update your local branch) 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

     modified: pomodoro.html 
no changes added to commit (use "git add" and/or "git commit -a") 

[C:\Work\BitBucket\proj1] 14:32:53>git checkout pomodoro.html 

[C:\Work\BitBucket\proj1] 14:33:00>git status 
On branch work2 
Your branch is behind 'origin/work2' by 9 commits, and can be fast-forwarded. 
    (use "git pull" to update your local branch) 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

     modified: pomodoro.html 
no changes added to commit (use "git add" and/or "git commit -a") 

[C:\Work\BitBucket\proj1] 14:33:04> 

(tôi nhận được kết quả tương tự với git checkout -- pomodoro.html.)

Vì vậy, git nghĩ pomodoro.html được sửa đổi, nhưng khi tôi sử dụng

git difftool 

Tôi đang nói với các tệp giống hệt nhau.

Không biết nếu nó có liên quan, nhưng tôi có core.autocrlf đặt thành true trong cấu hình Git của tôi. Tuy nhiên, khi tôi thay đổi nó thành false, tôi cũng nhận được hành vi tương tự.

+0

@MarkusUnterwaditzer Anh ấy đã thử điều đó. – millimoose

+0

'git checkout pomodoro.html' sẽ kiểm tra tệp ra khỏi chỉ mục, không phải từ cam kết - điều này có thể là thủ phạm nếu bạn đã thêm các thay đổi. Để * hoàn nguyên * một tệp, tôi sẽ thử 'git checkout HEAD pomodoro.html'. – millimoose

+0

@millimoose: Tôi chưa cam kết những thay đổi, tôi chỉ muốn hoàn tác những thay đổi không được tổ chức. "git checkout HEAD pomodoro.html" đã không hoạt động, hoặc là ... – Number8

Trả lời

2

nó là một cảnh hoang dã, nhưng:

là tệp này vì một số lý do được đánh dấu là thực thi trong repo? nó không chắc cho một html, nhưng nếu nó đã được lưu trữ trên ví dụ một ổ đĩa định dạng chất béo nó là đáng suy nghĩ. nếu đây là trường hợp và cửa sổ git của bạn không được cấu hình để bỏ qua các quyền, tập tin sẽ luôn được thay đổi vì không có số lượng đặt lại hoặc kiểm tra sẽ cung cấp cho bạn bit thực thi trên cửa sổ.

để thoát khỏi thông điệp thiết lập chế độ File false: https://superuser.com/a/139044/236874

+0

Tôi làm việc với các tệp có thể thực thi được đánh dấu và chúng hoạt động tốt trong cửa sổ git. Không có vấn đề vì điều đó (chỉ có vấn đề là khi tôi muốn tạo một trong đó là thực thi, tôi không tìm thấy một cách để nó trong cửa sổ, vì vậy tôi kiểm tra trong một số unix, thiết lập, cam kết và đẩy). –

+0

có lẽ điều này đã được cải thiện trong quá khứ. tôi đã có vấn đề với điều này một vài năm trước đây. cho phép chờ trả lời từ tác giả gốc nếu anh ta không biết về việc đặt lại hoặc nếu có một số vấn đề thực sự. – mnagel

+0

Tôi vừa gặp sự cố đó với tệp PDF. Nó xuất hiện quanh co khi được tải lên với git, nhưng nó xuất hiện không sao qua FTP. Cuối cùng nó bật ra tôi không thể thoát khỏi nó với thanh toán hoặc stash và điều này đã cho tôi ở đây, mà giải quyết tất cả mọi thứ. cảm ơn vì điều đó. – mgPePe

4

Liên kết này (được cung cấp bởi AD7Six) - help.github.com/articles/dealing-with-line-endings - có vẻ là trả lời: sửa chữa các kết thúc dòng.
Vì autocrlf đã được đặt thành true, không chắc chắn cách kết thúc dòng trong một tệp đó bị rối tung lên.
Cảm ơn tất cả các nhận xét khác.

0

Tôi đã có vấn đề tương tự, trong trường hợp của tôi trên OSX và đó là do hai tập tin có cùng tên nhưng trường hợp khác nhau: https://sourcedevelop.org/blog/post/fix-git-commands-not-working-some-files

Tôi đã mất nhiều giờ cố gắng tìm hiểu làm thế nào để sửa chữa nó, hướng dẫn như thế này sau . Chìa khóa để nhận biết triệu chứng của hai tập tin có cùng tên là khi bạn thực hiện kiểm tra git trên các tệp, sau đó bạn sẽ thấy tệp được liệt kê trong trạng thái git tiếp theo của bạn, tuy nhiên trường hợp tệp khác nhau. Tôi đã loại bỏ các tập tin và sau đó thêm một trong số họ trở lại.

git rm -f <filename> 
git rm -f <filename> 
git commit -m "Removing duplicate files" 
<put the file back, the version you want> 
git add . 
git commit -m "adding files back" 
Các vấn đề liên quan