Cố gắng git pull có lỗi: không thể mở .git / FETCH_HEAD: Quyền bị từ chối


209

Xin hãy giúp tôi, tôi đang cố chạy cái này trong terminal của mình:

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

Sau đó tôi thử cái này

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Giúp tôi với, tôi không hiểu vấn đề này.


Bạn đã thêm khóa công khai của mình vào tài khoản github chưa?
madhead

3
Bạn có quyền ghi cho thư mục & tệp cục bộ nơi bạn cố gắng kéo không? Ngoài ra, có lẽ sudokhông giúp được gì ở đây vì nó cần quyền truy cập vào các khóa ssh của bạn (không phải root).
Benjamin Bannier

Tôi đã gặp vấn đề này và giải quyết nó bằng cách cấp cho người dùng của tôi quyền Sửa đổi & Quyền truy cập đầy đủ vào thư mục đó (Windows)
Frank

Câu trả lời:


193

Có vẻ như cái đầu tiên không hoạt động vì người dùng của bạn không có quyền thay đổi thư mục đó và thứ hai vì người dùng root của bạn không có khóa SSH phù hợp để truy cập kho git đó.

Tùy thuộc vào những gì bạn đang cố gắng thực hiện, có thể tốt hơn là sao chép kho lưu trữ vào một thư mục khác hoặc có thể chownthư mục hiện tại có quyền truy cập đầy đủ cho người dùng của bạn


Tôi đang đối mặt với vấn đề tương tự và tôi không chắc liệu tôi có thể cho phép www-datangười dùng của mình cập nhật .gitthư mục hay không. Tôi đang gọi kịch bản shell bằng cách sử dụng php qua http trong trình duyệt. Chi tiết tại đây
KillABug

13
Điều này thường xảy ra khi bạn vô tình quên bạn đã chạy sudo suvà hành động của bạn là root trong một repo. Một đơn giản sudo chown -R <username> .trong thư mục đó làm việc kỳ diệu!
Ray

149

Kiểm tra nếu bạn có đủ quyền trên .git/thư mục. Bạn nên có quyền viết. Bạn có thể đặt chúng bằng lệnh sau.

Chuyển đến thư mục dự án của bạn:

chown -R youruser:yourgroup .git/

1
Điều này mang lại cho tôichown: youruser: Invalid argument
zakdances

43
Nó nên làchown -R youruser .git/
pha trộn

1
Tôi đã phải chown .git/và thư mục mẹ của nó để nó hoạt động
zadubz

Đây có vẻ như là một vấn đề rất phổ biến .. ok nếu bạn làm việc với người dùng khác và một cái gì đó từ người dùng khác, bạn đã thay đổi quyền của mình thì hơi khó.
René Höhle

Nếu chownkhông hoạt động thì cũng chạy lệnh nàysudo chmod 0777 -R .git/
Kiran

48

Nếu bạn muốn cấp phép cho nhóm,

sudo chmod g+w .git -R

làm việc tốt nhất cho tôi

Dành cho MacOS

sudo chmod -R g+w .git 

29

Đây là một vấn đề cho phép UNIX. Không sử dụng sudođể nhân bản kho lưu trữ. Bạn không có các khóa ssh giống như root và dù sao bạn cũng không nên làm việc như root. Cố gắng ls -latìm các quyền trên các tệp và sử dụng chmod(hoặc sudo chown) để sửa chúng. Mong rằng sẽ giúp.


Chính xác là thế này! Tôi đã gặp phải vấn đề này bởi vì tôi phải làm sudo cloneđể chấp nhận thỏa thuận cấp phép mới của XCode. Câu trả lời là chấp nhận thỏa thuận, sau đó nhân bản không có sudo.
Barnaby


21

Câu trả lời cho vấn đề này đảm bảo .git / FETCH_HEAD có các đặc quyền ghi và bạn sẽ hoàn tất.

Tôi gặp vấn đề này trên Windows và nó đã được giải quyết bằng cách cấp quyền ghi.

Trong unix người ta có thể chạy chmod a+rw .git/FETCH_HEADtừ kho dự án sau đó nó sẽ hoạt động.


không hoạt động với .git/FETCH_HEADmột mình nếu vấn đề cho phép được bật .git.
Cœur

17

Hãy thử như thế này,

Bước 1: Đầu tiên kiểm tra bạn là ai? nó sẽ trả về tên người dùng hiện tại, ví dụ như Ubuntu

$ whoami 

Bước 2: Sau đó, đặt quyền cho người dùng hiện tại của bạn, trong trường hợp đó, ubfox bằng

sudo chown -R ubuntu .git/

công trình này cho tôi trong khi chạy cài đặt bài giảng trên Amazon lightsail ubuntu
Jide

11

Trong trường hợp của tôi, tôi chỉ có quyền truy cập đọc vào tệp .git / FETCH_HEAD. Tôi đã phải thực hiện "sudo chmod g + w .git / FETCH_HEAD" để có thể thực hiện yêu cầu kéo.


không hoạt động với .git/FETCH_HEADmột mình nếu vấn đề cho phép được bật .git.
Cœur

Tôi đã phải cho phép ghi quyền truy cập vào thư mục git cho nhómsudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD, Giải pháp hoàn hảo.
Rishi Kulshreshtha

9

Tôi đã gặp sự cố đầu tiên (quyền FETCH_HEAD bị từ chối) trên Windows.

Tôi đã sửa nó bằng cách chạy Git Bash với tư cách quản trị viên (nhấp chuột phải, chạy với tư cách quản trị viên).


9

Nếu bạn chưa thêm mình vào nhóm sở hữu .git/, thì bạn nên làm.

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

Cái này làm gì

  1. tìm ra nhóm nào sở hữu .git/và thêm người dùng của bạn vào nhóm đó.
  2. đảm bảo các thành viên trong nhóm có quyền tương tự như chủ sở hữu .git/.
  3. lặp lại điều này cho .gitignore, mà có lẽ bạn sẽ cần
  4. đăng xuất bạn và quay lại để làm mới quyền truy cập tệp thành viên nhóm của bạn

Nếu bạn vừa mới làm một cái gì đó như thế này (thêm chính bạn vào nhóm sở hữu .git/), thì bạn cần phải đăng xuất và đăng nhập lại trước khi bạn có thể viết thư cho .git/FETCH_HEADbạn git pull.


7

Đặt quyền cho người dùng hiện tại của bạn bằng cách chạy lệnh

$ sudo chown -R <username> .git/



4

Chạy Windows 7, khi tôi gặp vấn đề này là do tôi đã ẩn thư mục .git. Các quyền đã ổn, nó chỉ bị ẩn. Hiển thị thư mục đã giải quyết nó.


Thư mục ẩn, ai sẽ thunk.
Ian Newland

4

Điều này sẽ giải quyết tất cả các quyền trong thư mục

sudo chown -R $(whoami) ./

3

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

  1. Nhấp chuột phải vào thư mục .git
  2. bấm vào lấy thông tin
  3. đặt quyền cho người dùng của bạn
  4. nhấp vào biểu tượng Cog và nhấp vào áp dụng cho các mục kèm theo

Không có quyền từ chối lỗi trong git. 🎉


2

Nhìn vào chủ sở hữu và nhóm .gitthư mục với (đầu tiên hãy đến thư mục mẹ của .git) ll .git, xem nhóm và chủ sở hữu của thư mục, thêm người dùng của bạn vào nhóm của chủ sở hữu vớisudo usermod -a -G yourusername groupsofonwner , sau đó đăng xuất => đăng nhập và mọi thứ đều hoạt động .

Vì vậy vào mùa hè

  1. vào thư mục mẹ của git

    $cd your path
    
  2. tìm chủ sở hữu nhóm của .gitdirecotry

    $ll .git     
    
  3. thêm người dùng của bạn vào nhóm đó

    $usermod -a -G yourusername ownergroupofgit
    
  4. Đăng xuất và đăng nhập vào hệ thống để thay đổi này có hiệu lực.

  5. Tận hưởng nó;)


2

Có vấn đề đó khi thư mục .git bị ẩn và tất cả các tệp trong đó cũng bị ẩn. Chỉ ẩn thư mục .git mà không cập nhật tệp đệ quy và nó sẽ hoạt động.


2

Lý do của lỗi này có thể là bội số nhưng trong trường hợp của tôi, tôi đã cập nhật nhánh với root rồi khi tôi cố cập nhật nó với người dùng bình thường thì nó báo lỗi.

Hãy thử cả hai giải pháp nên làm việc cho bạn

1- sudo chmod g+w .git -R

Nếu nó không hoạt động, hãy thử giải pháp tiếp theo hy vọng nó sẽ giải quyết vấn đề của bạn

2 - rm -f .git/FETCH_HEAD

1

Tôi đã có thông báo này khi sử dụng phần mở rộng git cho windows. Cách khắc phục của tôi chỉ đơn giản là đóng tiện ích mở rộng git sau đó mở lại với tư cách quản trị viên


1

Trong trường hợp của tôi,

sudo chmod ug + wx .git -R

Lệnh này hoạt động.


1

Vấn đề này phát sinh khi bạn không cung cấp đủ quyền cho thư mục .git. Để giải quyết vấn đề này-

  1. Đầu tiên điều hướng đến thư mục làm việc của bạn.
  2. Nhập lệnh này-

    sudo chmod a + rw .git -R

Hy vọng nó giúp..!!


1

Tôi đã có cùng một lỗi chính xác nhưng trong trường hợp của tôi, vấn đề là kết quả của việc xây dựng lại Apache sau khi nâng cấp lên phiên bản PHP. Tóm lại, tôi quên cài đặt mô-đun 'suexec' của Apache.

Nó không có gì để làm với nhóm hoặc quyền sở hữu. Điều đó chỉ khiến tôi mất hai ngày để tìm ra, ai đó bắn tôi ...


1

Trong trường hợp của tôi, tôi đã có một hệ thống khởi động kép (Windows 10 và Linux) với thư mục dự án trên đĩa NTFS. Hóa ra, trên một bản cập nhật khác, Windows 10 được kích hoạt bởi chính nó "khởi động nhanh" trong cài đặt của nó. Sau khi tôi đã bỏ chọn nó trong Windows - "lỗi: không thể mở .git / FETCH_HEAD: Quyền bị từ chối" trong Linux đã biến mất.


0

Tôi đã nhận được điều này bởi vì tôi có nhiều hơn 1 tài khoản người dùng trong hộp của mình. Tôi đã đăng nhập với tư cách là người dùng A và đang ở trong một thư mục dành cho người dùng B. Người dùng A không có quyền đối với nội dung của người dùng B. Khi tôi nhận ra tôi không phải là nơi tôi nghĩ rằng tôi đang ở trong hệ thống tệp, lỗi này có ý nghĩa.


0

nếu bạn tìm thấy vấn đề tương tự trong máy chủ windows, thì bạn cần chạy dòng lệnh với đủ quyền, chẳng hạn như quyền của quản trị viên.


0

đối với người dùng MacOS (nếu High Sierra hoặc phiên bản cao hơn) sử dụng:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR: Trong các hệ thống Khởi động kép, hãy tắt Khởi động nhanh cho Windows

Tôi gặp vấn đề này trong hệ thống Ubuntu / Windows khởi động kép. Tôi không thể viết bất cứ điều gì trong bất kỳ phân vùng nào được chia sẻ với Windows (phân vùng NTFS).

Gần đây tôi đã cài đặt lại cả hai và quên bật "Khởi động nhanh" trong Windows. Mọi thứ trở lại bình thường sau khi tôi khởi động lại trong windows và tắt tính năng đó và khởi động lại.

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.