2013-07-25 77 views
32

Gần đây, tôi được thêm làm thành viên/cộng tác viên cho dự án Github. Tôi đã nhân bản dự án đó trên máy cục bộ.Quyền bị từ chối lỗi trên Github Push

Tôi đã thực hiện một số thay đổi và cam kết cục bộ và hiện đang cố gắng Đẩy thay đổi cho repo gốc nhưng khi tôi cố gắng Push, tôi nhận được một số lỗi về quyền?

C:\Users\MM\Documents\GitHub\software-licensing-php [master]> git push 
origin master 
remote: Permission to EasySoftwareLicensing/software-licensing-php.git denied to 
irfandayan. 
fatal: unable to access 'https://github.com/EasySoftwareLicensing/software-licen 
sing-php.git/': The requested URL returned error: 403 
C:\Users\MM\Documents\GitHub\software-licensing-php [master]> git statu 
s 
# On branch master 
# Your branch is ahead of 'origin/master' by 2 commits. 
# (use "git push" to publish your local commits) 
# 
nothing to commit, working directory clean 

Tôi có thiếu quyền cho phép thay đổi để tôi có thể hỏi tác giả gốc của dự án?

+0

Tôi nghĩ bạn chỉ có quyền truy cập đọc-ghi github khi nhân bản qua 'ssh: //' và không phải là 'http: //'. – trojanfoe

Trả lời

83
  • bấm nút ngã ba trên trang dự án github gốc
  • bản sao kho chia hai bạn thay vì ban đầu
  • push to nó
  • báo chí Pull yêu cầu nút trên kho lưu trữ của bạn
  • tạo ra nó
  • chờ đợi ban đầu tác giả để chấp nhận nó
+0

Tôi chỉ cần ngã ba, sao chép, cam kết và đẩy các thay đổi và tạo yêu cầu kéo trên dự án chia đôi đó và tôi có thể thấy nó trong các yêu cầu kéo. Tác giả gốc có nhận được thông báo về yêu cầu kéo này không? –

+1

Có, chắc chắn anh ta sẽ bị buộc phải xem xét nó :) nhưng bạn phải tạo yêu cầu kéo của chính mình và nói những gì và tại sao bạn thay đổi để nó sẽ dễ dàng cho tác giả xem xét. – Cynede

+1

Nếu anh ấy thêm tôi làm cộng tác viên thì quá trình đó là gì? – rocketspacer

3

Xem github help on cloning URL. Với HTTPS, nếu bạn không được phép đẩy, về cơ bản bạn sẽ có quyền truy cập chỉ đọc. Vì vậy, có, bạn cần phải yêu cầu tác giả cho phép bạn.

Nếu tác giả không cấp quyền cho bạn, bạn luôn có thể nĩa (sao chép) kho lưu trữ của mình và tự mình làm việc. Một khi bạn đã thực hiện một tính năng tốt đẹp và thử nghiệm, sau đó bạn có thể gửi một yêu cầu kéo đến tác giả ban đầu.

+0

Liên kết đó không nói (kể từ ngày 6 tháng 6 năm 2016) cần có sự cho phép của tác giả khi đẩy qua HTTPS. Chỉ yêu cầu tên người dùng và mật khẩu github của bạn. HTTPS thực sự là phương pháp nhân bản được đề xuất theo trang đó – BeetleJuice

+0

@patrick, tên người dùng và mật khẩu của bạn sẽ được yêu cầu nếu bạn đẩy tới kho lưu trữ mà bạn là cộng tác viên.Hãy tưởng tượng những gì có thể xảy ra nếu không: tôi nhân bản repo của bạn với https, sau đó bắt đầu đẩy công cụ ngẫu nhiên chỉ bằng cách nhập tên người dùng và mật khẩu của tôi. Cách duy nhất tôi nên có thể đẩy công cụ vào repo của bạn, là để bạn nói với github rằng nó là ok, tôi là mát mẻ. – Shahbaz

+0

"nếu bạn không được phép đẩy, bạn cần yêu cầu tác giả cho phép bạn." LÀM THẾ NÀO ĐỂ ASK, THÔNG ĐIỆP, MAIL hoặc GÌ? –

1

Dựa trên thông tin mà áp phích ban đầu đã cung cấp cho đến thời điểm này, chủ sở hữu dự án EasySoftwareLicensing/software-licensing-php sẽ chỉ chấp nhận yêu cầu kéo từ dĩa, vì vậy bạn có thể cần phải ngã ba chính repo và đẩy đến ngã ba của bạn , sau đó thực hiện yêu cầu kéo từ nó đến repo chính.

Xem sau GitHub help articles để được hướng dẫn:

  1. Fork a Repo.
  2. Collaborating.
3

Đối với một số lý do đẩy tôi và kéo nguồn gốc đã được thay đổi để HTTPS-url thay cho SSH-url (có thể là một lỗi copy-paste vào cuối của tôi), nhưng cố gắng để đẩy sẽ cho tôi sau lỗi sau khi cố gắng đăng nhập:

Username for 'https://github.com': xxx 
Password for 'https://[email protected]': 
remote: Invalid username or password. 

việc chỉnh sửa url [remote "origin"] trong file .git/config chỉ url SSH, không có vấn đề:

[remote "origin"] 
    url = gi[email protected]:<username>/<repo>.git 

Hy vọng điều này sẽ hữu ích!

28

Tôi đã từng có lỗi tương tự khi tôi thay đổi email người dùng của mình bằng cách cấu hình git - người dùng chung.email và tìm thấy giải pháp của tôi ở đây: Go to: Control Panel -> User Accounts -> Quản lý thông tin của bạn -> Windows Credentials

Dưới Credentials Generic có được một số thông tin liên quan đến Github , Nhấp vào chúng và nhấp vào "Xóa".

và khi bạn cố gắng đẩy thứ gì đó, bạn cần đăng nhập lại. hy vọng điều này sẽ hữu ích cho bạn

+0

Sau khi thêm khóa công khai ssh của tôi vào github, sau đó áp dụng giải pháp của bạn là làm việc cho tôi. – freewill

+0

Nó làm việc cho tôi, thks – nguyencse

+0

Làm việc cho tôi. Tôi đã có nhiều tài khoản trên github nên git đang sử dụng một tài khoản được cấu hình trong trình quản lý thông tin đăng nhập. Bằng cách xóa các tham chiếu đó, tôi đã có thể xác thực lại. – guwere

13

Có thể giải quyết vấn đề này bằng cách cung cấp tên người dùng và mật khẩu trong url dưới đây.

Hãy thay thế tên truy cập và mật khẩu với credentauls github của bạn

git remote set-url origin https://<username>:<password>@github.com/narulasrinivas/FirstRepository.git 
+2

Cảm ơn. Nó giúp . –

+0

Finnnnaaaally! lệnh một dòng nhanh đã giải quyết được vấn đề của tôi. *tiết kiệm – JoshYates1980

0

Một cách khác để nhận được lỗi này, là nếu bạn có trùng lặp hoặc mâu thuẫn ~/.ssh/* mục. Trước tiên hãy kiểm tra xem chuỗi khóa ssh của bạn có nội dung gì:

$ ssh-add -l 
2048 SHA256:<hash1> [email protected] (RSA) 
2048 SHA256:<hash2> [email protected] (RSA) 
2048 SHA256:<hash3> [email protected] (RSA) 

Như bạn có thể thấy có hai email giống nhau và dễ bị nhầm lẫn. Sau đó kiểm tra config tập tin của bạn:

$ cat ~/.ssh/config 

# GitHub: [email protected] 
Host github_ex 
HostName github.com 
PreferredAuthentications publickey 
IdentityFile ~/.ssh/github_ex 

# GitHub: [email protected] 
Host github 
HostName github.com 
PreferredAuthentications publickey 
IdentityFile ~/.ssh/github 

# Bitbucket: [email protected] 
Host bitbucket 
HostName bitbucket.org 
PreferredAuthentications publickey 
IdentityFile ~/.ssh/bitbuc 

Ở đây bạn thấy rằng bạn có hai tài khoản email khác nhau để GitHub nhưng cùng HostName. Ai đó chắc chắn sẽ bị lẫn lộn, kể cả git của bạn.

Để giải quyết, tự loại bỏ (sau khi sao chép) (mặc định) file:

cd ~/.ssh 
rm id_rsa 
rm id_rsa.pub 

Bây giờ sao chép lại một trong những bạn muốn sử dụng, ví dụ Host github:

cp -a github id_rsa 
cp -a github.pub id_rsa.pub 

Sau đó thử lại .

Vì một số lý do, việc xóa các khóa bằng ssh-add -d id_rsa không hoạt động như mong đợi, vì có vẻ như chuỗi khóa được lưu vào bộ nhớ cache.

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