2012-08-23 36 views
5

Tôi đã nhầm lẫn khi thiết lập điều khiển từ xa trên repo git của mình và tìm nạp từ một dự án hoàn toàn khác. May mắn thay, không có hợp nhất, nhưng bây giờ tôi có lịch sử của 2 dự án nổi xung quanh trong repo của tôi và tôi đang cố gắng tìm ra cách để lấy lại repo của tôi về trạng thái trước khi tôi thực hiện sai tìm nạp.Sửa lịch sử Git sau khi tìm nạp sai Repo

Tôi đã đọc khoảng reflog, rebase, gc và các lệnh khác cố gắng giải quyết, điều này sẽ giúp tôi loại bỏ những thứ tôi vô tình tìm nạp, nhưng cho đến nay vẫn chưa có vị trí nào.

Có vẻ như tôi đã có lịch sử của cả hai dự án trong repo của mình, nhưng chúng hoàn toàn độc lập. về cơ bản có 2 cây riêng biệt các cam kết chạy song song với nhau, trên thực tế, đây là những gì tôi nhìn thấy trong gitk khi xem xét tất cả các chi nhánh:

enter image description here

Bạn có thể thấy rằng các cam kết ở giữa là không được kết nối với các cam kết ở đầu và cuối của lịch sử. Ngày-khôn ngoan, họ đang xen kẽ, nhưng gitk không hiển thị chúng xen kẽ vì một lý do nào đó.

Các cam kết bị cô lập (ở giữa ảnh) là những cái tôi đang cố gắng để thoát khỏi bản thân mình, và chúng dường như không được gắn với bất kỳ chi nhánh nào. Không có tuyến đường nào từ bất kỳ HEAD nào trong repo của tôi trở lại bộ cam kết này.

Cho đến nay tôi đã cố gắng (theo thứ tự trong trường hợp nó làm cho một sự khác biệt):

git remote prune 
git prune 
git gc 
git gc --aggressive --prune=tomorrow 
git remote update --prune 
git fetch --all 

Nhưng không có gì đã giúp được nêu ra. Bất cứ ai có thể đề nghị làm thế nào tôi có thể loại bỏ các cam kết từ repo của tôi?

Trả lời

8

Bạn chỉ cần xóa thẻ đang treo (0.1.something, trong đó something không hiển thị trong ảnh chụp màn hình của bạn) bằng cách sử dụng git tag -d 0.1.something. Một khi điều này được thực hiện, các cam kết sẽ được gc-thể. Miễn là có một thẻ đạt đến cam kết, cam kết này được coi là có thể truy cập và do đó sẽ tồn tại "mãi mãi", nó có hiệu quả miễn dịch với bộ sưu tập rác cho đến khi bạn loại bỏ bất kỳ ref nào trỏ tới nó (chi nhánh, thẻ, ...) khác refs, ...)

+1

Cảm ơn, đó là chính xác những gì tôi cần, không xảy ra với tôi rằng thẻ có thể ngăn tôi xóa các cam kết +1 – chrisbunney

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