Các câu trả lời chấp nhận hiện nay không giúp tôi vì tôi không có một ref trên repo từ xa để xóa - đó là thuần túy về địa phương của tôi! Vì vậy, nếu bạn đang ở trong tình huống đó, đây là những gì cần làm:
Đây là vấn đề tôi đang gặp phải:
$ git fetch origin
error: cannot lock ref 'refs/remotes/origin/fix/sub-branch':
'refs/remotes/origin/fix' exists; cannot create
'refs/remotes/origin/fix/sub-branch'
From <repo URL>
! [new branch] fix/sub-branch -> origin/fix/sub-branch
(unable to update local ref)
Tôi đã thử đề xuất của câu trả lời được chấp nhận nhưng nhận được điều này:
$ git push origin :fix
error: unable to delete 'fix': remote ref does not exist
error: failed to push some refs to <repo URL>
Vì vậy, ref thậm chí còn không tồn tại origin
- nó rõ ràng chỉ quanh quẩn ở đâu đó trên repo cục bộ của tôi. Vì vậy, tôi đã chạy $ git remote show me
, tạo ra:
Remote branches:
...
refs/remotes/origin/fix stale (use 'git remote prune' to remove)
...
Sau đó, giải pháp rõ ràng:
$ git remote prune origin
Pruning origin
URL: <redacted>
* [pruned] origin/fix
Với điều này, sự cố đã biến mất:
$ git fetch origin
remote: Counting objects: 5, done.
remote: Total 5 (delta 2), reused 2 (delta 2), pack-reused 3
Unpacking objects: 100% (5/5), done.
From <repo URL>
* [new branch] fix/sub-branch -> origin/fix/sub-branch