2009-11-07 32 views
112

Tôi mới vào Git và tôi dường như có một chi nhánh quá nhiều nếu tôi thực hiện lệnh sau:cảnh báo: refname 'đầu' là mơ hồ

warning: refname 'HEAD' is ambiguous. 

tôi nhận được kết quả như sau:

warning: refname 'HEAD' is ambiguous. 
From github.com:dagda1/hornget 
* branch   master  -> FETCH_HEAD 
warning: refname 'HEAD' is ambiguous. 
warning: refname 'HEAD' is ambiguous. 

Nếu tôi thực hiện git branch -a

tôi nhận được như sau:

HEAD 
* master 
remotes/emmekappa/master 
remotes/origin/HEAD -> origin/master 
remotes/origin/master 

Tôi bị nhầm lẫn bởi remotes/origin/HEAD -> origin/master.

Đây là gì và làm cách nào để thoát khỏi nhánh không rõ ràng.

Tôi đã đến giai đoạn này bằng cách thực hiện hợp nhất nơi tôi nghĩ rằng tôi đã thêm chi nhánh mơ hồ.

+9

Lệnh đầu tiên bạn thực hiện là gì? Chắc chắn nó không phải là 'cảnh báo: refname 'HEAD' là mơ hồ.' –

+0

' từ xa/nguồn gốc/HEAD -> origin/master' không phải là một vấn đề: nó chỉ cho thấy nhánh nào là mặc định trong remote 'origin'. Chi nhánh có tên ** 'HEAD' ** là. –

+3

Tôi nghĩ bạn cần chỉnh sửa câu hỏi để hiển thị lệnh bạn đang cố thực hiện :) – Kris

Trả lời

186

Vấn đề là bạn có một chi nhánh gọi là HEAD, điều này hoàn toàn nguy hiểm, vì đó là tên tượng trưng cho bất kỳ chi nhánh nào là chi nhánh hiện tại.

Đổi tên nó:

git branch -m HEAD newbranch 

sau đó bạn có thể kiểm tra nó và quyết định phải làm gì (xóa nó, hoặc lưu dưới một cái tên chi nhánh mô tả)

(The origin/HEAD chi nhánh ở xa không phải là một vấn đề)

+0

Điều này cũng có thể xảy ra nếu bạn có tệp hoặc thư mục có cùng tên với chi nhánh. –

+2

Trong khi 'origin/HEAD' có thể không phải là một vấn đề, nếu bạn vô tình tạo ra một nhánh gọi là' origin/somebranch' là một vấn đề (và sẽ dẫn đến thông báo lỗi "mơ hồ"). Khi bạn cố gắng kéo từ "somebranch", bạn sẽ gió kéo từ nhánh địa phương (ngẫu nhiên) của bạn chứ không phải từ xa. Trong trường hợp đó, tôi thấy rằng đề nghị của flickerfly làm 'git branch -d origin/somebranch' hoạt động rất tốt. – machineghost

+0

Điều đó đã khắc phục được điều đó, cảm ơn. Đáng lưu ý, nhánh "HEAD" được tạo tự động, không phải bởi tôi. Nó chứa một cam kết hợp nhất và tôi không thể hoàn nguyên về trạng thái sạch bằng cách sử dụng reflog. Vì vậy, tôi đổi tên chi nhánh, xóa nó, rebased của tôi "1 trước" chủ địa phương để nguồn gốc/chủ, đẩy mà không có một vấn đề –

29

Ngoài ra, thao tác này sẽ xóa chi nhánh, nếu bạn không muốn.

git branch -d HEAD 

Sử dụng vốn -D để buộc các xóa:

git branch -D HEAD 
+3

nhưng nó vẫn sẽ vẫn còn mơ hồ, có cách nào để tẩy nó? – RzR

+1

Điều này không hoạt động. Bạn phải đổi tên trước. –

19

Nếu bạn đã tạo ra một thẻ tên HEAD sử dụng ...

git tag HEAD 

... bạn chỉ có thể xóa sử dụng thẻ:

git tag -d HEAD 

Xem trường hợp này: kerneltrap.org/git-tag HEAD

1

Điều này có nghĩa là bạn có một chi nhánh có tên là "head". Tôi đã có cùng một vấn đề, tôi giải quyết bằng cách thực hiện lệnh sau đây.

git branch -d head 
-3

Kiểm tra tài liệu tham khảo có sẵn trong kho git của bạn. Bạn sẽ quan sát hai HEAD trong kho lưu trữ của bạn. Điều này làm cho chi nhánh của bạn với refname HEAD mơ hồ.

git show-ref 

Giải pháp:

  • Đổi tên chi nhánh

    git branch -m HEAD <new_branch_name> 
    

    HOẶC

  • Xóa chi nhánh

    git branch -d HEAD