2011-03-11 23 views
6

Tôi đã điều sau đây trong tôi ~/.gitconfig(đây là duy nhất ở đây để giúp bạn hiểu những gì tôi đang nhìn vào):Làm thế nào để thoát khỏi "refs/chia hai nga/xấu" chi nhánh tại Git

[alias] 
    lg = log --graph --all --pretty=format:'%Cred%h %Cgreen(%cr)%Creset - %s %C(yellow)%d %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative 

Khi tôi thực hiện git log, nó cho tôi thấy cây cam kết đầy đủ với tên chi nhánh và nội dung. Hôm qua tôi đã bắt đầu một số git bisect và hôm nay tôi thấy có chi nhánh refs/bisect/bad trong đầu ra của nhật ký của tôi.

Chính xác chi nhánh của refs/bisect/bad là gì và làm cách nào để loại bỏ nó?

Trả lời

10

Khi bạn đang sử dụng git bisect, nó sử dụng refs/bisect/bad để theo dõi các cam kết xấu cuối cùng. (Ref đó được cập nhật khi bạn làm git bisect bad.)

Tôi nghi ngờ rằng những gì đã xảy ra ở đây là bạn đã kết thúc chia đôi, và nó báo cáo cam kết xấu đầu tiên, nhưng bạn không bao giờ kết thúc chia cắt với git bisect reset, sẽ làm sạch các ref mà nó tạo ra. Bạn vẫn có thể chạy lệnh đó, và nó sẽ đưa bạn trở lại nơi bạn đang ở trước khi bắt đầu bisections - tuy nhiên, tôi chắc chắn rằng công việc của bạn là cam kết và trạng thái git là sạch trước khi làm như vậy, chỉ để tránh bất kỳ sự nhầm lẫn có thể .

Nếu bạn sử dụng __git_ps1 trong lời nhắc bash của mình, nó sẽ giúp bạn lưu ý rằng bạn vẫn đang bị bẻ cong bằng cách xuất ra (9dad0bb...)|BISECTING. Tôi đã thảo luận __git_ps1 một chút trong another answer, điều này có thể hữu ích.

+4

Trong các phiên bản Git tương đối gần đây, bạn cũng có thể sử dụng 'git bisect reset HEAD' để tránh chuyển đổi các cam kết. – Cascabel

11

Đó là con trỏ cho cam kết được đánh dấu là xấu trong khi chia đôi. Bạn có thể chạy

git bisect reset

hoặc tự loại bỏ các con trỏ từ .git/refs/chia hai nga (nhưng tôi không khuyên)

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