2011-11-11 53 views
6

Thậm chí có thể xóa một bộ thay đổi cụ thể khỏi kho lưu trữ Git. Tôi muốn làm điều này bởi vì có một cam kết trong khi trước đây đã thêm một số tệp nhị phân hoàn toàn vô dụng để quản lý mã nguồn.Xóa một changeset cụ thể khỏi kho lưu trữ Git hoàn toàn?

Tôi có thể hiểu nếu điều này là không thể làm được thực tế là các nút cam kết có cha mẹ và một lịch sử cụ thể, nhưng tôi đoán nó sẽ không làm tổn thương để yêu cầu.

Và câu trả lời là không cho các câu hỏi hỏi "bạn có thể sao chép bản sao mới của thời gian trước khi cam kết đó xảy ra và bắt đầu lại từ đó không?".

+0

bản sao có thể có của [Làm cách nào để xóa một tệp lớn được cam kết sai trong git] (http://stackoverflow.com/questions/8083282/how-do-i-remove-a-big-file-wrongly-committed- in-git) – antlersoft

Trả lời

8

Sử dụng git rebase -i <commit-id>, có id là cam kết trước changeset bạn muốn xóa. Nó sẽ mở ra một danh sách các commit giữa đầu và changeset, xóa khỏi danh sách commit bạn muốn và tiếp tục. Khi cam kết này sẽ được "tách ra", nó có nghĩa là nó sẽ được thả nổi trong kho cho đến khi nó được thu thập rác. Bạn có thể sử dụng git gc để ép buộc.

Tuy nhiên, bạn nên nhớ rằng tất cả các bản sao của kho lưu trữ sẽ được phân tách và phải được rebased quá sau nó.

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