468

Sử dụng git 1.6.4.2, khi tôi thực hiện, git pulltôi gặp lỗi này:

error: unable to resolve reference refs/remotes/origin/LT558-optimize-sql: No such file or directory
From git+ssh://remoteserver/~/misk5
 ! [new branch]      LT558-optimize-sql -> origin/LT558-optimize-sql  (unable to update local ref)
error: unable to resolve reference refs/remotes/origin/split-css: No such file or directory
 ! [new branch]      split-css  -> origin/split-css  (unable to update local ref)

Tôi đã thử git remote prune origin, nhưng nó không giúp được gì.

|
747

Hãy thử dọn dẹp kho lưu trữ cục bộ của bạn với:

$ git gc --prune=now
$ git remote prune origin

người đàn ông git-gc (1):

git-gc - Cleanup unnecessary files and optimize the local repository

git gc [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune]

       Runs a number of housekeeping tasks within the current repository, such as compressing file revisions
       (to reduce disk space and increase performance) and removing unreachable objects which may have been
       created from prior invocations of git add.

       Users are encouraged to run this task on a regular basis within each repository to maintain good disk
       space utilization and good operating performance.

người đàn ông git-remote (1):

git-remote - manage set of tracked repositories

git remote prune [-n | --dry-run] <name>

           Deletes all stale remote-tracking branches under <name>. These stale branches have already been
           removed from the remote repository referenced by <name>, but are still locally available in
           "remotes/<name>".            
|
  • 1

    Tại sao điều này làm việc? Vấn đề mà nó khắc phục là gì?

    – Hoàng Hải San 14:22:44 14/02/2017
  • 1

    Lệnh thứ hai làm việc cho tôi. Rõ ràng tôi đã có một tài liệu tham khảo bị hỏng đến một chi nhánh từ xa vừa được tạo. Không chắc nó đã xảy ra như thế nào, nhưng rất vui vì nó là một sửa chữa đơn giản. Cảm ơn Vitek!

    – Hoàng Trường Sơn 16:56:59 20/07/2017
  • 1

    Lệnh đầu tiên là đủ cho tôi.

    – Vũ Như Trà 01:54:52 31/07/2017
  • 1

    Điều này làm việc hoàn hảo! Tôi cũng thích một lời giải thích về những gì nó làm và tại sao điều này làm việc. Cảm ơn!

    – Lý Kim Ly 18:31:50 18/09/2018
  • 1

    Sẽ git remote prune originlệnh chạy trên bản sao làm việc địa phương của tôi hoặc trên kho lưu trữ từ xa?

    – Tạ Duy An 11:48:14 17/12/2018
489

Đã xảy ra với tôi là tốt. Trong trường hợp của tôi, ref xấu là master và tôi đã làm như sau:

rm .git/refs/remotes/origin/master
git fetch

Điều này làm cho git khôi phục các tập tin ref. Sau đó, mọi thứ hoạt động như mong đợi một lần nữa.

|
  • 1

    Tôi đã làm điều tương tự, và nó đã giải quyết vấn đề của tôi. Khi tôi mở tệp trong Notepad ++, nó đã bị hỏng rõ ràng.

    – Trịnh Sao Mai 14:52:49 26/10/2013
  • 1

    đảm bảo bạn chọn tệp gây ra sự cố cho bạn thay vì chủ

    – Hồ Trung Kiên 19:10:08 20/01/2014
  • 1

    @ bia.migueis: mặc dù vậy cũng sẽ không gây hại gì nếu bạn vô tình xóa chủ nhân - nó cũng sẽ được cập nhật lần tải tiếp theo.

    – Huỳnh Thái Bình Dương 00:10:25 07/07/2014
  • 1

    Nếu nó là một mô hình con, có thể hơi khó để tìm ref. Trước tiên hãy kiểm tra xem có phải .gitlà thư mục ls -lahay không, xem nội dung của tệp .gittệp để tìm thư mục .git thực tế trong đó các ref. .gitnội dung tập tin trong trường hợp của tôi: gitdir: ../.git/modules/my-submodule-name

    – Huỳnh Minh Hiền 07:23:46 30/11/2016
  • 1

    tuyệt diệu! Điều đó cũng làm việc cho tôi! Tôi không biết làm thế nào để cảm ơn bạn vì vậy tôi chỉ nêu lên câu trả lời của bạn. :)

    – Dương Yến Loan 19:03:15 06/08/2017
107

Điều này đã làm công việc cho tôi:

git gc --prune=now
|
60

Đối với tôi, nó hoạt động để loại bỏ các tệp đang ném lỗi từ thư mục .git/refs/remotes/origin/.

|
  • 1

    đã làm điều đó! Nhưng chỉ vì tò mò bạn có biết tại sao lỗi này lại xuất hiện không? (mọi thứ đang hoạt động tốt và rồi đột nhiên một ngày lỗi này xuất hiện). Và bạn có biết làm thế nào để xóa các tập tin giải quyết nó?

    – Trịnh Sao Mai 11:06:05 02/04/2016
  • 1

    Thật tốt khi nghe điều này cũng đã sửa nó cho bạn. Thành thật mà nói tôi không có ý tưởng gì gây ra lỗi xuất hiện. Tôi nghĩ rằng một trong những tệp trong thư mục đã không đồng bộ. Vì không có cách khắc phục nào khác mà tôi thấy có hiệu quả với tôi nên tôi đã sử dụng nó như là phương sách cuối cùng.

    – Hồ Trung Kiên 09:31:37 04/04/2016
  • 1

    Làm việc tuyệt vời! Lưu ý rằng bạn phải xóa tất cả các tệp gây ra sự cố (dựa trên báo cáo lỗi bạn đang gặp phải), vì nếu bạn chỉ xóa một tệp và thử kéo nó sẽ quay lại.

    – Huỳnh Thái Bình Dương 22:42:47 20/10/2017
  • 1

    Điều đó đã làm việc.

    – Huỳnh Minh Hiền 16:12:59 03/03/2018
  • 1

    Điều này là làm việc cho tôi!

    – Dương Yến Loan 03:41:03 11/04/2018
40

Thực hiện các lệnh sau:

rm .git/refs/remotes/origin/master

git fetch

git branch --set-upstream-to=origin/master

Chỉ trong trường hợp, nếu bạn cần biết là gì .git/refs/remotes/origin/master, bạn sẽ đọc Remotes phần trong Git Tài liệu tham khảo .

|
36

Tôi đã có vấn đề tương tự và giải quyết nó bằng cách đi đến tập tin bị lỗi:

\repo\.git\refs\remotes\origin\master

Tập tin này chứa đầy null, tôi đã thay thế nó bằng ref mới nhất từ ​​github.

|
33

Trong trường hợp của tôi, vấn đề đã được giải quyết sau khi tôi xóa tất cả các tệp tham chiếu trong thư mục .git.

Nếu bạn nhìn vào tin nhắn, nó sẽ cho bạn biết những tập tin bạn cần xóa (cụ thể).

Các tập tin cần xóa ngồi dưới .git/refs/remotes.

Tôi vừa xóa tất cả các tập tin ở đó, và chạy gc prune

git gc --prune=now

Sau đó, mọi thứ hoạt động tốt.

|
  • 1

    Trong trường hợp của tôi, tôi chỉ cần xóa .git / refs / điều khiển từ xa, sau đó cập nhật và đẩy qua máy chủ và nó đã hoạt động.

    – Trịnh Sao Mai 10:20:59 07/11/2017
25

Tôi chỉ muốn thêm làm thế nào nó có thể xảy ra mà một tham chiếu phá vỡ.

Nguyên nhân gốc rễ có thể

Trên hệ thống của tôi (Windows 7 64 bit), khi BSOD xảy ra , một số tệp tham chiếu được lưu trữ (rất có thể hiện đang được mở / được ghi vào khi BSOD xảy ra) được ghi đè bằng NULLký tự (ASCII 0).

Như những người khác đã đề cập, để khắc phục nó, chỉ cần xóa các tệp tham chiếu không hợp lệ đó và tìm nạp lại hoặc kéo lại kho lưu trữ.

Thí dụ

Lỗi: cannot lock ref 'refs/remotes/origin/some/branch': unable to resolve reference 'refs/remotes/origin/some/branch': reference broken

Giải pháp: xóa tập tin%repo_root%/.git/refs/remotes/origin/some/branch

|
  • 1

    Kịch bản tương tự trên Windows 10 64bit - hoạt động trong repo git khi BSOD xảy ra. error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken. Cố gắng git pullsau khi xóa các tập tin đầu tiên trở lại fatal: update_ref failed for ref 'HEAD': cannot lock ref 'HEAD': unable to resolve reference 'refs/heads/master': reference broken. Sau khi xóa tập tin thứ hai git pull origin masterđã thành công.

    – Trịnh Sao Mai 18:50:06 19/09/2018
18

Thử nó:

git gc --prune=now

git remote prune origin

git pull
|
17

git fetch --prune đã sửa lỗi này cho tôi:

[marc.zych@marc-desktop] - [~/code/driving] - [Wed May 10, 02:58:25]
[I]> git fetch
error: cannot lock ref 'refs/remotes/origin/user/janek/integration/20170505': 'refs/remotes/origin/user/janek/integration' exists; cannot create 'refs/remotes/origin/user/janek/integration/20170505'
From github.com:zooxco/driving
 ! [new branch]            user/janek/integration/20170505 -> origin/user/janek/integration/20170505  (unable to update local ref)
From github.com:zooxco/driving
[marc.zych@marc-desktop] - [~/code/driving] - [Wed May 10, 02:58:30]
[I]> git fetch --prune
 - [deleted]               (none)     -> origin/user/janek/integration

Điều này giả định rằng các chi nhánh vi phạm đã bị xóa trên điều khiển từ xa.

|
  • 1

    Ví dụ của bạn có vẻ không đầy đủ: nó không hiển thị cái --prunemà tôi có thể thấy. Ngoài ra proTip: xóa lời nhắc mật khẩu vô dụng sau khi dán ví dụ.

    – Huỳnh Diệu Thúy 22:28:06 04/08/2017
  • 1

    Bạn hoàn toàn đúng - Tôi đã bỏ đầu ra từ lệnh tìm nạp nhưng tôi chỉ đưa nó vào ví dụ. Cảm ơn vì mẹo xóa mật khẩu quá!

    – Tạ Thảo Nghi 18:17:23 05/08/2017
8

Để trả lời vấn đề này rất ngắn, vấn đề này xuất hiện khi địa phương của bạn có một số thông tin về điều khiển từ xa và ai đó thay đổi điều gì đó khiến điều khiển từ xa và thay đổi của bạn không đồng bộ.

Tôi đã gặp vấn đề này bởi vì ai đó đã xóa chi nhánh từ xa và một lần nữa được tạo ra với cùng tên.

Để xử lý các vấn đề như vậy, hãy thực hiện thao tác kéo hoặc tìm nạp từ xa.

git remote prune origin

hoặc nếu bạn đang sử dụng bất kỳ GUI nào, hãy tìm nạp từ xa.

|
4

Nếu git gc --prune=nowkhông giúp bạn. (xui xẻo như tôi)

Những gì tôi đã làm là loại bỏ dự án tại địa phương, và sao chép lại toàn bộ dự án một lần nữa.

|
2

Thử đi:

git pull origin Branch_Name

Branch_Name, chi nhánh mà bạn hiện đang ở.

Nếu bạn chỉ làm một git pull, nó cũng kéo tất cả các tên nhánh được tạo khác.

Vì vậy, lý do bạn đang nhận được điều này:

! [new branch]      split-css  -> origin/split-css  (unable to update local ref)
|
2

Tôi đã có thể làm việc với

git remote update --prune
|
1

Tôi đã sử dụng git prune originvà điều đó đã làm việc.

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.