2009-12-25 18 views
39

Tôi đang cố gắng thiết lập gitosis theo hướng dẫn here.git Cảnh báo: HEAD từ xa đề cập đến ref không tồn tại, không thể thanh toán

Nó hoạt động tốt từ máy từ xa của tôi để máy chủ có vẻ được thiết lập tốt nhưng tôi cũng muốn có thể phát triển trên máy chủ gitosis của mình từ tài khoản người dùng khác (không phải người dùng git được tạo trong gitosis thiết lập).

tôi đã sao chép chìa khóa và sửa đổi gitosis.conf để các tài khoản người dùng khác có quyền truy cập, nhưng khi tôi cố gắng sao chép nó dường như làm việc ngoại trừ ở cuối nó nói:

git Warning: remote HEAD refers to nonexistent ref, unable to checkout 

và tôi kết thúc với một thư mục rỗng trừ .git

tôi đã google cho điều này một chút nhưng không có cái nhìn sâu sắc thực sự vào những gì vấn đề là

+0

Đối với những người đã gặp sự cố này với GitHub và thực hiện lần truy cập đầu tiên trên Google, hãy xem http://stackoverflow.com/questions/1485578/how-do-i-change-a-git-remote-head-to -point-to-something-beyond-master và https://help.github.com/articles/error-remote-head-refers-to-nonexistent-ref-unable-to-checkout – Tino

Trả lời

25

Tôi phát hiện ra điều gì đã xảy ra. Vấn đề là tôi không chú ý đến các cảnh báo khi tôi đang đẩy máy chủ gitosis của mình nên tôi không nhận ra rằng tôi không đẩy một nhánh cụ thể. Tôi đã giả định nó sẽ chỉ đẩy hiện tại nhưng đó không phải là trường hợp cho đến khi bạn thiết lập:

git config push.default current 
+0

Đây là bài đăng đã cho tôi biết: http://stackoverflow.com/questions/1475468/git-push-failed-you-did-not-specify-any-refspecs-to-push và thực tế là khi Tôi đã làm git branch -r dựa trên câu trả lời của Michael Krelin và không có gì trở lại. – srboisvert

+0

Cảm ơn vì điều này. Tôi chạy vào cùng một vấn đề. – Dilawar

+0

Rất cám ơn vì điều này. –

21
  1. làm git branch -rgit checkout -b master <remotebranchofinterest>

  2. Kiểm tra tệp HEAD trong điều khiển từ xa .git.

  3. Kiểm tra nếu ai đó đã hỏi những câu hỏi: here

1

Giữ nó đơn giản. Thêm vào ủy quyền gitosis và khóa SSH cho tài khoản người dùng trên máy chủ của bạn và sao chép như bình thường:

+0

Đó chính xác là những gì tôi đã làm và dẫn đến thông báo lỗi. Truy cập có vẻ ổn định dựa trên đầu ra git (tôi đã bật gỡ lỗi để cung cấp thêm thông tin chi tiết). – srboisvert

2

Đã xảy ra sự cố tương tự. Dường như trong lần đẩy đầu tiên của tôi, tôi đã làm git push origin master:/refs/heads/master thay vì git push origin master:refs/heads/master (chú ý dấu gạch chéo thêm). Điều này làm cho chủ của tôi được đặt (trong kho từ xa) tại refs/heads/refs/heads/master thay vì refs/heads/master. Bản sửa lỗi là sắp xếp lại các thư mục trên điều khiển từ xa và đẩy lại.

0

Nếu bạn đang cố sao chép lại http:// lưu ý rằng bạn cần git mới hơn 1.6.6 - nếu không bạn nên sử dụng một URI git://.

18

Một nguyên nhân nữa có thể xảy ra đối với cảnh báo này có thể là chi nhánh master trong kho bị thiếu (HOẶC) kho lưu trữ KHÔNG sử dụng nhánh chính. Nếu trường hợp này xảy ra, đừng lo lắng về Cảnh báo !, hãy sử dụng

git checkout <some_existing_branch> 

Cảnh báo là vì theo mặc định, sau khi kéo git cố gắng thanh toán vào nhánh chính.

+1

Đây là một vấn đề đối với tôi ngay bây giờ. Nếu bạn đang sử dụng pip để cài đặt các gói Python từ git, có vẻ như git cố gắng thanh toán chủ trước, sau đó chuyển sang bất kỳ nhánh nào hoặc cam kết bạn yêu cầu nó. Bước đầu tiên sẽ thất bại nếu bạn không có master trong repo. – tobych

0

Tôi sử dụng tortoiseGit và tôi không biết cách sử dụng git thông qua dòng lệnh. Vì vậy, tôi luôn tự hỏi làm thế nào tôi có thể tránh được vấn đề như vậy trong rùa của tôi. Vì vậy, có lẽ tôi không đơn độc.Tôi cố định vấn đề theo cách này:

  • bản sao repo từ xa
  • nhấp chuột phải vào thư mục gốc và từ đó chọn một chi nhánh hiện có

Im trường hợp của tôi, chỉ có một chi nhánh "dev ", không có chủ. Vì vậy, khi tôi cố gắng để sao chép không có chi nhánh địa phương để kiểm tra và ngay sau khi tôi chuyển sang "dev" nó đã có thể kiểm tra tất cả các nội dung thành công. Hy vọng rằng sẽ hữu ích.

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