Điều đang xảy ra là bạn không sử dụng git đúng cách. Hoàn toàn không có vấn đề với việc tạo ra một chi nhánh và xóa các tập tin và thư mục. Khi bạn chuyển về nhánh chính của mình, các tệp và thư mục đã xóa sẽ được khôi phục, vì chúng chưa bị xóa khỏi nhánh đó.
Điều đang xảy ra trong trường hợp của bạn là bạn đã xóa tệp/thư mục ra khỏi git, bằng cách xóa hệ điều hành, thay vì lệnh "git rm". Đó là lý do tại sao trạng thái git báo cáo chúng là "đã xóa". Đó cũng là lý do tại sao các tệp vẫn bị xóa khi bạn chuyển đổi nhánh. git đang chờ các tệp ở đó và chúng không có.
Trạng thái Git cho bạn biết chạy "git add" nhưng điều đó không hoạt động. Kể từ khi tập tin không còn ở đó, chạy git thêm sẽ không âm thầm. Bạn có thể không nhận thấy nhưng thông báo cũng cho bạn biết để chạy "git rm". Bạn có thể nghĩ rằng bạn không thể làm điều đó vì tệp đã biến mất, nhưng điều đó không đúng. Lệnh rm sẽ vẫn thành công trong việc xóa tệp khỏi repo, mặc dù bạn đã xóa nó khỏi hệ thống tệp.
Điều khác và dễ dàng hơn bạn có thể làm là chạy git add -A. Cờ -A sẽ cho biết thêm thông báo bất kỳ tệp đã xóa hoặc tệp được thêm nào.
Hãy thử điều này cho một thử nghiệm:
git init test-delete
cd test-delete
touch filea
mkdir dir_b
touch dir_b/fileb
git add .
git commit -m "Initial commit"
git checkout -b new_branch
rm -rf dir_b
git add -A
git commit -m "deleted files from branch"
(ls to prove files arent' there)
git checkout master
(ls to show files have been restored)
git checkout new_branch
(ls to show files are gone again)
Bạn có cam kết chi nhánh 3.0 WIP của bạn trước khi kiểm tra ra chi nhánh chủ của bạn? Nếu không, đó có thể là vấn đề. –
Tôi nhân bản repo bên ngoài. Đã tạo và kiểm tra chi nhánh '3.0-wip' mới. Đã xóa các tệp/thư mục qua Trình tìm kiếm. Đã tạo tệp 'index.php' mới và đã cam kết nó. Nếu tôi thanh toán chi nhánh 'master' của mình thì các tệp vẫn biến mất và' trạng thái git' hiển thị tất cả các tệp/thư mục là 'đã xóa:'. –
Bạn đã thêm git chưa. | git add -u trước cam kết của bạn? Làm cách nào bạn thực hiện những thay đổi đó trong nhánh chi nhánh của bạn? –