Làm cách nào để đổi tên một tệp trong git chỉ khác nhau theo từng trường hợp?


14

Trong dự án git (Xcode) của tôi, tôi đã cam kết một tên tệp với trường hợp không chính xác. Bây giờ tôi đã cố gắng đổi tên nó, nhưng khi tôi cam kết, tôi nhận được:

gây tử vong: Sẽ không thêm bí danh tệp 'MyProject / MyFile.h' ('MyProject / MyFilE.h' đã tồn tại trong chỉ mục)

Tôi chắc chắn điều này là do git không được sử dụng để chạy trên một hệ thống tệp không phân biệt chữ hoa chữ thường, như trường hợp HFS +. Nhưng làm thế nào để tôi có được xung quanh nó?

Tôi đã thử đổi tên cả hai tệp thành một thứ khác và cam kết điều đó, sau đó đổi tên chúng thành những gì tôi muốn, nhưng nó vẫn thất bại (với cùng một thông báo lỗi).

Câu trả lời:


21

Khi được hỏi và trả lời trên stackoverflow , có một cách dễ dàng hơn để làm điều này không liên quan đến việc tạo một hệ thống tệp mới trong tệp hình ảnh đĩa:

Di chuyển tệp hiện có của bạn sang một bên, cam kết di chuyển đó, sau đó di chuyển nó trở lại bằng cách sử dụng trường hợp bạn muốn duy trì và cam kết. Làm xong.

Thí dụ:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"

vì lợi ích của việc tránh thối liên kết, chúng tôi thường yêu cầu bạn sao chép các phần có liên quan của câu trả lời đằng sau liên kết vào phần thân của câu trả lời.
Ian C.

Cảm ơn @ ian-c. Tôi đã hy vọng rằng quy tắc này không áp dụng cho các liên kết bên trong gia đình stackexchange.
mspasov

1
Vâng, tôi hiểu những gì bạn nói nhưng tính nhất quán là tốt.
Ian C.

Kỳ dị. Tôi đã tích cực tôi đã thử điều này, nhưng hôm nay nó hoạt động. Cảm ơn.
Ken

2

Tôi chưa tìm thấy cách khắc phục trực tiếp trên hệ thống tệp không phân biệt chữ hoa chữ thường, bạn cần một hệ thống tệp phân biệt chữ hoa chữ thường.

May mắn thay, Mac OS X có hỗ trợ gắn đĩa ảo tốt, do đó bạn có thể nhanh chóng & dễ dàng nhận được (tạo) một hệ thống tệp nhạy cảm trường hợp (tạm thời) trên máy tính của mình.

Mở Disk Utility, tạo một hình ảnh mới và đặt trường "Định dạng" thành một trong những phiên bản phân biệt chữ hoa chữ thường của "Mac OS Extended". Cũng đảm bảo rằng bạn làm cho nó đủ lớn cho kho lưu trữ của bạn.

Gắn đĩa mới của bạn, kiểm tra kho git vào nó, đảm bảo tệp được đặt tên chính xác có nội dung chính xác và xóa cái khác. Cam kết và đẩy các thay đổi của bạn, và sau đó bạn có thể ngắt kết nối hình ảnh đĩa và xóa nó.

Nếu bạn không có máy chủ từ xa để sao chép (ví dụ: bạn chỉ đang chạy repo git cục bộ trên ổ cứng), hãy nhớ rằng bạn có thể sao chép trực tiếp từ kho git khác trên ổ cứng.


1
Đó là rất nhiều lao động. Bạn có thể làm điều này mà không cần phải quay một hệ thống tệp mới trong tệp hình ảnh đĩa.
Ian C.

1

Bước 1 : Chỉ cần đổi tên tệp với tên khác hơn (chỉ trường hợp chữ cái.) Chỉ cần chọn một tên ngẫu nhiên khác với tên hiện tại và từ tên bạn muốn đặt.

Bước 2 : cam kết tệp này bằng GUI (Xcode) hoặc bằng CLI (Terminal)

Bước 3 : đổi tên tệp khi bạn muốn đổi tên tệp ở vị trí đầu tiên. Vì vậy, bây giờ, cũng sẽ có nhiều sự khác biệt hơn so với trường hợp với tên trước đó.

Bước 4 : cam kết lại tệp đã đổi tên.

Không có thủ thuật ma thuật cần thiết. Và bạn có thể chọn cam kết bằng GUI hoặc CLI.


0

Tôi sử dụng sourcetree. Không sử dụng CLI, có một bước dễ dàng để làm điều này. đổi tên tệp thành tên khác (ví dụ Index.php thành Index_old.php) sau đó cam kết và đẩy .. một lần nữa thay đổi tên thành tên mong muốn (index.php) sau đó xác nhận và gửi.

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.