Tôi nghĩ rằng nó sẽ làm việc để sao chép các thư mục để được đổi tên vào một thư mục mới với tên bạn muốn, và xóa các thư mục cũ , và git add
, git commit
và push
tất cả mọi thứ. Nhưng đây có phải là cách tốt nhất?
Tôi nghĩ rằng nó sẽ làm việc để sao chép các thư mục để được đổi tên vào một thư mục mới với tên bạn muốn, và xóa các thư mục cũ , và git add
, git commit
và push
tất cả mọi thứ. Nhưng đây có phải là cách tốt nhất?
Câu trả lời:
Đổi tên cơ bản (hoặc di chuyển):
git mv <old name> <new name>
Trường hợp nhạy cảm đổi tên, ví dụ. từ casesensitive
đến CaseSensitive
Bạn muốn sử dụng hai bước:
git mv casesensitive tmp
git mv tmp CaseSensitive
( Thông tin thêm về sự nhạy cảm trong trường hợp Git ... )
Theo sau là cam kết và đẩy sẽ là cách đơn giản nhất để đổi tên một thư mục trong repo git.
casesensitive
thành CaseSensitive
, bạn có thể thực hiện theo cách này: git mv casesensitive Temp
và sau đó git mv Temp CaseSensitive
git rm -rf --cached path/to/your/directories
thì hãy thêm lại và cam kết
git config core.ignorecase false
và sau đó chạy các lệnh liên tiếp, nếu không, trong phần thứ hai tôi sẽ gặp source is empty
lỗi.
Nếu bạn nhận được lỗi này: fatal: đổi tên 'Foldername' không thành công: Đối số không hợp lệ
Thử cái này:
git mv foldername tempname && git mv tempname folderName
git mv foldername tempname
và git mv tempname folderName
sẽ hoạt động trên Windows.
1. Thay đổi tên thư mục từ oldfolder thành newfolder
git mv oldfolder newfolder
2. Nếu newfolder đã có trong kho lưu trữ của bạn và bạn muốn ghi đè lên nó và sử dụng: - force
git mv -f oldfolder newfolder
Đừng quên thêm các thay đổi vào chỉ mục và cam kết chúng sau khi đổi tên bằng git mv.
3. Đổi tên người dùng thành thư mục Tên trong trường hợp hệ thống tệp không nhạy cảm
Đổi tên đơn giản bằng lệnh mv bình thường (không phải git mv) sẽ không được công nhận là filechange từ git. Nếu bạn thử nó với lệnh 'git mv' như trong dòng sau
git mv foldername folderName
Nếu bạn đang sử dụng hệ thống tệp không phân biệt chữ hoa chữ thường, ví dụ: bạn đang sử dụng máy Mac và bạn không định cấu hình nó là phân biệt chữ hoa chữ thường, bạn sẽ gặp thông báo lỗi như thế này:
fatal: đổi tên 'Foldername' không thành công: Đối số không hợp lệ
Và đây là những gì bạn có thể làm để làm cho nó hoạt động: -
git mv foldername tempname && git mv tempname folderName
Điều này phân tách quá trình đổi tên bằng cách đổi tên thư mục lúc đầu thành một tên người dùng hoàn toàn khác. Sau khi đổi tên thành tên người dùng khác, thư mục cuối cùng có thể được đổi tên thành thư mục mới. Sau những 'git mv' đó, một lần nữa, đừng quên thêm và cam kết thay đổi. Mặc dù đây có lẽ không phải là một kỹ thuật đẹp, nhưng nó hoạt động hoàn toàn tốt. Hệ thống tập tin vẫn sẽ không nhận ra sự thay đổi của các trường hợp chữ cái, nhưng git không phải do đổi tên nó thành tên người dùng mới và đó là tất cả những gì chúng tôi muốn :)
Bạn có thể đổi tên thư mục bằng hệ thống tập tin. Sau đó, bạn có thể làm git rm <old directory>
và git add <new directory>
( Trang trợ giúp ). Sau đó, bạn có thể cam kết và đẩy.
Git sẽ phát hiện ra rằng nội dung giống nhau và đó chỉ là một hoạt động đổi tên và nó sẽ xuất hiện dưới dạng một mục đổi tên trong lịch sử. Bạn có thể kiểm tra xem đây là trường hợp trước khi sử dụng cam kếtgit status
Từ ứng dụng web tôi nghĩ bạn không thể, nhưng bạn có thể đổi tên tất cả các thư mục trong Git Client, nó sẽ di chuyển các tệp của bạn trong các thư mục được đổi tên mới, thay vì cam kết và đẩy vào kho lưu trữ từ xa.
Tôi gặp một vấn đề rất giống nhau: Tôi phải đổi tên các thư mục khác nhau từ chữ hoa thành chữ thường (như Abc -> abc), tôi đã đổi tên tất cả các thư mục có tên giả (như 'abc___') và sau đó cam kết với kho lưu trữ từ xa rằng tôi đã đổi tên tất cả các thư mục thành tên gốc bằng chữ thường (như abc) và nó đã lấy chúng!
Tôi đã giải quyết nó trong hai bước. Để đổi tên thư mục bằng lệnh mv, bạn cần có quyền làm như vậy, nếu bạn không có quyền, bạn có thể làm theo các bước sau. Giả sử bạn muốn đổi tên caseensitive thành Caseensitive.
Bước 1: Đổi tên thư mục (caseensitive) thành thứ khác từ explorer. ví dụ: Đổi tên caseensitive thành thư mục1 cam kết thay đổi này.
Bước 2: Đổi tên thư mục mới được đặt tên này (thư mục1) thành tên nhạy cảm trường hợp dự kiến (Caseensitive), vd. Đổi tên thư mục1 thành Caseensitive. Cam kết thay đổi này.
Đối với trường hợp đổi tên nhạy cảm, git mv somefolder someFolder
đã làm việc cho tôi trước đây nhưng không phải hôm nay vì một số lý do. Vì vậy, như một cách giải quyết, tôi đã tạo một thư mục mới temp
, chuyển tất cả nội dung somefolder
vào temp
, xóa somefolder
, cam kết temp
, sau đó tạo someFolder
, chuyển tất cả nội dung temp
vào someFolder
, xóa temp
, cam kết và đẩy someFolder
và nó hoạt động! Hiện lên như someFolder
trong git.
Đơn giản chỉ cần đổi tên thư mục. git là một "trình theo dõi nội dung", do đó, băm SHA1 là như nhau và git biết rằng bạn đổi tên nó. Điều duy nhất thay đổi là đối tượng cây.
rm <directory>
git add .
git commit