2012-02-11 70 views
14

Tôi khá mới đối với git và phiên bản kiểm soát nói chung, và có câu hỏi về di chuyển các tập tin xung quanh. Tôi có một repo chủ trên GitHub, với 6 tập tin nguồn.Git Di chuyển tập tin vào thư mục

Tôi đã thực hiện rất nhiều công việc trong dự án và giờ đây nhánh địa phương của tôi chứa hai thư mục có nguồn trong đó.

Cấu trúc thư mục sử dụng được như:

Master:

  • Tập 1
  • Tập 2
  • Tập 3
  • Tập 4
  • Tập 5
  • file 6

Trong trường hợp như chi nhánh địa phương của tôi bây giờ trông như thế này:

New Folder 1:

  • New File 1
  • New File 2
  • New File 3

mới Thư mục 2:

  • Tập 1
  • Tập 2
  • Tập 3
  • Tập 4
  • Tập 5
  • Tập 6

Làm thế nào tôi có thể di chuyển cấu trúc địa phương của tôi đến chi nhánh tổng thể mà không làm mất của tôi cam kết lịch sử trên các tập tin cũ?

Trả lời

11

Chỉ cần cam kết. Git đổ lỗi vv thường sẽ làm một công việc khá tốt của tự động phát hiện di chuyển.

7

git không thực sự theo dõi "di chuyển" các tệp, nó thực hiện theo yêu cầu từ nội dung tương tự. Vì vậy, chỉ cần thực hiện di chuyển và thêm/xóa tệp khi thích hợp. (Bạn sẽ làm cho cuộc sống dễ dàng hơn cho các công cụ trong tương lai nếu bạn tránh thay đổi nội dung cũng như di chuyển chúng trong một cam kết.)

Sau đó, để xem nhật ký di chuyển, hãy sử dụng -M, -C hoặc các biến thể của chúng thành git log. Cờ tương tự áp dụng cho các công cụ khác và bạn nên đọc trợ giúp để hiểu chi tiết về những gì họ làm.

Nếu bạn sử dụng git mv trên một tệp, chỉ cần git rmgit add cho bạn.

+0

những người khác giải thích rằng khó thực hiện tất cả những gì bạn cần. Tạo thư mục để mv đầu tiên để thuận tiện – doozMen

4

Các áp phích khác là chính xác, tuy nhiên nếu bạn muốn xác nhận rằng git sẽ xem đây là di chuyển (chứ không phải kết hợp xóa/tạo), hãy chạy git status.Bạn sẽ thấy:

# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# renamed: oldfile.txt -> newFolder/newfile.txt 
+8

Nếu git không nhìn thấy di chuyển như là một sự kết hợp của xóa/tạo, phải làm gì sau đó? – Gauthier

+1

Xóa giai đoạn tệp khỏi thư mục trước đó, sau đó thêm giai đoạn thêm tệp vào thư mục mới - hầu hết có thể git thấy điều này là đổi tên. – Serg

0

Trong github, nếu bạn không có quá nhiều file để di chuyển, một sự thay thế thú vị là để chỉnh sửa các tập tin, và thay đổi tên của nó để:

folder_to_move_into/file_name 

Khi bạn cam kết, tệp được di chuyển đến thư mục. Nếu thư mục không tồn tại, nó sẽ được tạo.

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