2016-03-10 13 views
7

Tôi muốn duy trì lịch sử tệp trong thư mục con của repo. Nhưng tôi cần phải đổi tên tên thư mục cấp cao nhất. Khi tôi chạy 'git mv dirName newDirName Tôi nhận được' Fatal: source directory is empty; 'Git mv không thành công với Fatal: thư mục nguồn trống

thư mục nguồn của tôi có cấu trúc sau:

gitRepoDir 
--.git 
--Source 
-- -DirLevel2 
-- --DirLevel3 
--  --DirLevel4 
--  --DirLevel5 
+++  --DirNameToRename 
+++   --sub1dir 
+++   --File 
+++   --sub2dir 
+++   --File 
+++   --sub3dir 
+++   --File 
+++   --File 
+++   --sub4dir 
+++   --File 

Có cách nào để đổi tên thư mục cấp cao nhất và duy trì lịch sử của các tập tin trong thư mục con dưới đây? Hay tôi cần phải tạo cấu trúc thư mục trước rồi di chuyển các tệp bằng lệnh git mv?

+0

thư mục .git của bạn ở đâu? – gzh

+0

Xem ở trên chỉnh sửa cấu trúc thư mục – koderiter

+0

Đây có phải là trong Windows không? Lệnh git vẫn phân biệt chữ hoa chữ thường trong Windows. Lỗi này cho thấy nó không thể tìm thấy thư mục nguồn (hoặc nó có thể và rỗng). Đảm bảo vỏ được sử dụng trong lệnh khớp với tên của thư mục trong Windows explorer. – wnbates

Trả lời

14

Tôi nghĩ rằng, 'Fatal: source directory rỗng;', có nghĩa là dirName không nằm dưới sự kiểm soát của git bởi vì nó không phải là một phần của nguồn. Ví dụ, bạn có thể thử "trạng thái git", để tìm ra bất cứ điều gì có thể được kiểm soát bởi git.

+1

Lệnh hiển thị các tệp được quản lý bởi git là 'git ls-files'. – gzh

+0

Tôi thực hiện 'git ls-files' không trả về gì cho đến khi DirlLevel2 sau đó nó liệt kê các tập tin dưới sự kiểm soát git. tất cả các tệp tôi cần di chuyển được liệt kê. Tôi đã cố gắng để thực hiện từ DirLevel2 'git mv dirlevel3/dirlevel4/dirlevel5/DirNameToRename ...' và tôi nhận được kết quả tương tự. – koderiter

0

Thông thường, tên đường dẫn được sử dụng trong lệnh git là đường dẫn tương đối bắt đầu từ thư mục hiện tại.

Vì vậy, đối với câu hỏi của bạn, bạn phải kiểm tra sau.

1) Cho dù dirName là thư mục được quản lý bởi git. bạn có thể sử dụng lệnh git ls-files

2) Cho dù thư mục dirName có dưới giám đốc hiện tại hay không.

+0

'git ls-files' không trả về gì trong thư mục hiện tại mà tôi đang thực thi. DirLevel5 trong trường hợp này (xem cấu trúc thư mục ở trên) tại DirLevel2 là nơi 'git ls-files' và nó liệt kê các tệp. – koderiter

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