cảnh báo: tên gọi 'ĐẦU' là mơ hồ


139

Tôi chưa quen với Git và dường như tôi có một nhánh quá nhiều nếu tôi thực hiện lệnh sau:

warning: refname 'HEAD' is ambiguous.

Tôi nhận được đầu ra sau đây:

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 thi 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ối rối bởi remotes/origin/HEAD -> origin/master.

Đây là gì và làm thế nào tôi có thể thoát khỏi nhánh mơ hồ.

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ồ.


11
Lệnh đầu tiên bạn cố gắng thực hiện là gì? Chắc chắn là không phảiwarning: refname 'HEAD' is ambiguous.
Ben James

1
remotes/origin/HEAD -> origin/masterkhông phải là vấn đề: nó chỉ hiển thị nhánh nào được mặc định trong remote origin. Chi nhánh có tên HEADlà.
Jakub Narębski

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 thi :)
Kris

Để tái tạo điều này, hãy chạy "git fetch origin HEAD: HEAD". Rõ ràng nó cố gắng hợp nhất nhánh hiện tại thành một nhánh mới gọi là, theo nghĩa đen là ĐẦU.
Brain2000

Câu trả lời:


224

Vấn đề là bạn có một nhánh được gọi HEADlà cực kỳ nguy hiểm, vì đó là tên tượng trưng cho bất kỳ nhánh nào là 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 tên nhánh mô tả)

( origin/HEADChi nhánh từ xa không phải là vấn đề)


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

2
Mặc dù origin/HEADcó thể không phải là vấn đề, nhưng nếu bạn vô tình tạo một nhánh gọi là origin/somebranchIS có vấn đề (và sẽ dẫn đến cùng một thông báo lỗi "mơ hồ"). Khi bạn cố gắng kéo từ "somebranch", bạn sẽ nhanh chóng kéo từ chi nhánh (tình cờ) của bạn chứ không phải từ xa. Trong trường hợp đó, tôi thấy rằng đề nghị làm việc của flickerfly git branch -d origin/somebranchrất tuyệt.
máy vào

Điều đó đã sửa nó, cảm ơn. Đáng lưu ý, nhánh "ĐẦU" đượ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 duy nhất và tôi không thể trở lại 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ó, từ bỏ chủ nhân địa phương "1 đi trước" của mình thành nguồn gốc / chủ, đẩy mà không gặp vấn đề gì
Yunus Nedim Mehel 10/215

1
Điều tương tự có thể xảy ra đối với các thẻ, không chỉ các chi nhánh.
sebix

1
hả Tôi làm việc với các robot có đầu và đã tạo ra một nhánh có tên head(chữ thường).
orion elenzil

36

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

git branch -d HEAD

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

git branch -D HEAD

3
Nhưng nó sẽ vẫn còn mơ hồ, có cách nào để thanh trừng nó?
RzR

27

Nếu bạn đã tạo một thẻ có tên HEADbằng ...

git tag HEAD

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

git tag -d HEAD

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


Điều này xảy ra khi bạn thêm thẻ có tên CHÍNH do nhầm lẫn, vì vậy bạn phải xóa nó như được đề xuất ở đây
user1610308

1

Điều này có nghĩa là bạn có một nhánh tên là "đầu". 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.

git branch -d head

1

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 ĐẦU 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 tên đầu tiên mơ hồ.

git show-ref

Giải pháp:

  • Đổi tên chi nhánh

    git branch -m HEAD <new_branch_name>
    

    HOẶC LÀ

  • Xóa chi nhánh

    git branch -d HEAD
    
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.