Không thể Git-push master lên Github - 'origin' dường như không phải là kho lưu trữ git / quyền bị từ chối


84

Câu hỏi này liên quan đến vấn đề của tôi trong việc hiểu rebase, rẽ nhánh và hợp nhất cũng như vấn đề

Làm thế nào bạn có thể cam kết với tài khoản github của mình khi bạn có một teamMate trong danh sách từ xa của mình?

Tôi phát hiện ra rằng những người khác cũng gặp vấn đề tương tự. Sự cố dường như liên quan đến /etc/xinet.d/.

Sự cố: không thể đẩy chi nhánh cục bộ của tôi lên chi nhánh chính của tôi tại Github

tôi chạy

git push origin master

tôi có

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Thông báo lỗi cho tôi biết rằng nhánh 'origin' không có trong kho lưu trữ git cục bộ của tôi. Bằng cách này, Git ngừng kết nối với Github.

Điều này thật kỳ lạ, vì tôi đã không loại bỏ 'nguồn gốc' của nhánh.

Cây git của tôi là

  dev
* master
  ticgit
  remotes/Math/Math
  remotes/Math/master
  remotes/origin/master
  remotes/Masi/master

Làm cách nào bạn có thể đẩy chi nhánh địa phương của mình lên Github , trong khi bạn có chi nhánh của teamMate trong Git địa phương của mình?


Câu trả lời của VonC giải quyết được vấn đề chính. Tôi đặt một mật khẩu cho các khóa ssh của mình.

tôi chạy

$git push github master     

tôi có

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Có vẻ như tôi cần phải cung cấp cụm mật khẩu cho Git bằng cách nào đó.

Làm cách nào bạn có thể khiến Github yêu cầu cụm mật khẩu của bạn thay vì dựa vào khóa ssh?


Chỉ cần cập nhật câu trả lời của tôi. Thông số ssh không phải là tất cả. user.name và github.user cũng rất quan trọng
VonC

Đã cập nhật lại câu trả lời của tôi, với một số kiểm tra cấu hình ssh khác
VonC

"Quyền bị từ chối (khóa công khai)." thực sự có nghĩa là bạn đã cố gắng đăng nhập bằng khóa công khai của mình và quyền đã bị từ chối, thay vì không được phép truy cập vào khóa công khai của bạn.
Xiong Chiamiov

Vấn đề của tôi là một khóa ssh khác với một hệ thống khác. Tôi đã tải lên khóa khác và tất cả đều ổn. Tôi đã tìm ra nó với thủ thuật ssh -v git@github.com.
nalply

Câu trả lời:


96

Cái gì

$ git config --get-regexp '^(remote|branch)\.'

trả về (được thực thi trong kho lưu trữ git của bạn)?

Nguồn gốc chỉ là một quy ước đặt tên mặc định để tham chiếu đến kho lưu trữ Git từ xa.

Nếu nó không tham chiếu đến GitHub (mà là một đường dẫn đến kho lưu trữ đồng đội của bạn, đường dẫn có thể không còn hợp lệ hoặc khả dụng), chỉ cần thêm một nguồn gốc khác, như trong mục Bloggitation này

$ git remote add origin2 git@github.com:myLogin/myProject.git
$ git push origin2 master

(Tôi thực sự sẽ sử dụng tên 'github' thay vì 'origin' hoặc 'origin2')


Quyền bị từ chối (khóa công khai).
chết người: Kết thúc điều khiển từ xa bị treo đột ngột

Kiểm tra xem danh tính gitHub của bạn có được khai báo chính xác trong kho lưu trữ Git cục bộ của bạn hay không, như đã đề cập trong hướng dẫn Trợ giúp GitHub . (cả user.name và github.name - và github.token)

Sau đó, blog stonean gợi ý ( Marcio Garcia cũng vậy ):

$ cd ~/.ssh
$ ssh-add id_rsa

Aral Balkan cho biết thêm: tạo tệp cấu hình

Giải pháp là tạo một tệp cấu hình dưới ~ / .ssh / như được nêu ở cuối phần OS X của trang này .

Đây là tệp tôi đã thêm, theo hướng dẫn trên trang và các lần đẩy của tôi bắt đầu hoạt động trở lại:

Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

Bạn cũng có thể đăng kết quả của

ssh -v git@github.com

để có thêm thông tin về lý do tại sao kết nối ssh GitHub từ chối bạn.

Ngoài ra, hãy kiểm tra xem bạn đã nhập đúng khóa công khai của mình chưa (nó cần kết thúc bằng ' ==').
Không dán khóa cá nhân của bạn, nhưng khóa công khai của bạn. Khóa công khai sẽ trông giống như sau:

ssh-rsa AAAAB3<big string here>== tek...@gmail.com 

(Lưu ý: bạn đã sử dụng cụm mật khẩu cho các khóa ssh của mình chưa? Sẽ dễ dàng hơn nếu không có cụm mật khẩu)

Cũng kiểm tra url được sử dụng khi push ( git@github.com/..., not git://github.com/...)

Kiểm tra để đảm bảo rằng bạn có SSH Agent để sử dụng và lưu khóa của mình vào bộ nhớ cache.

Thử đi:

 $ ssh -i path/to/public/key git@github.com

Nếu điều đó hoạt động, thì điều đó có nghĩa là khóa của bạn không được ứng dụng ssh của bạn gửi đến GitHub.


1
quá tệ, tôi không thể bầu bạn nhiều hơn một lần! Tôi đã gặp sự cố này hai lần trong hai tuần và sau khi tôi google nó mỗi lần tôi tìm thấy bài đăng SO này. CẢM ƠN! :)
Ionuț Staicu

1
Tôi đã vật lộn với điều này - tôi đã thay đổi tất cả cấu hình git, nhưng ssh-add là bước tôi đã thiếu - cảm ơn rất nhiều!
metadaddy

Đó chỉ là một gợi ý nhỏ trong bối cảnh của câu trả lời tuyệt vời này - nhưng tôi thích một chút về việc đổi tên "Nguồn gốc" thành "GitHub" (hoặc tên máy chủ), nó thực sự giúp ích cho việc hình thành khái niệm nơi bạn đang gửi mọi thứ.
Alex C

Điều này cũng làm việc cho tôi. Nếu bạn làm theo hướng dẫn trên github, bạn sẽ không rõ nguồn gốc xuất xứ ngay lập tức.
nick

help.github.com/win-set-up-git theo dõi đến cuối - nó đã giúp tôi. Quyền bị từ chối (khóa công khai). - nghĩa là bạn đã thiết lập khóa ssh cho git trên máy cục bộ của bạn. ssh-keygen -t rsa -C "your_email@youremail.com"
Roger Alien

28

Đây là vấn đề với điều khiển từ xa của bạn. Khi bạn làm git push origin master, originlà điều khiển từ xa và masterlà nhánh bạn đang đẩy.

Khi bạn làm điều này:

git remote

Tôi cá là danh sách không bao gồm origin. Để thêm lại điều khiển từ xa gốc:

git remote add origin git@github.com:your_github_username/your_github_app.git

Hoặc, nếu nó tồn tại nhưng được định dạng không chính xác:

git remote rm origin
git remote add origin git@github.com:your_github_username/your_github_app.git

10

Câu trả lời của VonC là tốt nhất, nhưng phần phù hợp với tôi quá đơn giản và bị chôn vùi trong số rất nhiều câu trả lời có thể có khác. Nếu bạn giống tôi, bạn đã gặp phải vấn đề này khi chạy hướng dẫn "bắt đầu với đường ray" và bạn KHÔNG thiết lập khóa SSH công khai / riêng tư của mình.

Nếu vậy, hãy thử điều này:

  1. $>cd ~/.ssh

  2. $>ls

  3. Nếu đầu ra của ls là known_hostsvà không có gì khác, hãy truy cập: http://help.github.com/mac-key-setup/ và bắt đầu làm theo hướng dẫn từ phần "Tạo khóa" trở xuống.

Sau khi chạy các hướng dẫn đó, lệnh "git push origin master" của tôi đã hoạt động.


tôi chỉ đang tìm kiếm trang này. thans rất nhiều! = D
Hugo Mota

Nó đã giải quyết vấn đề của tôi. Hệ điều hành của tôi là Mac OS X và tôi đã làm theo cuốn sách "Hướng dẫn Ruby on Rails 3" và tôi gặp khó khăn ở phần 1.3.4 khi tôi cần thực hiện. git push origin master.Đây là lần đầu tiên tôi thiết lập Git và Rails. Hy vọng rằng điều này đã giúp những người khác.
sivabudh

4

Tôi gặp vấn đề tương tự và tôi nghĩ rằng tường lửa đang chặn giao thức git. Vì vậy, cuối cùng tôi phải sử dụng https: // để tìm nạp và đẩy. Tuy nhiên, điều này sẽ luôn nhắc người dùng nhập mật khẩu ...

đây là ví dụ làm việc cho tôi (chỉ để chia sẻ với những người không thể sử dụng git: // protocol :)

git fetch https://[user-name]@github.com/[user-name]/[project].git

nếu cách trên hoạt động, bạn có thể xóa nguồn gốc và thay thế bằng

git remote rm origin  
git remote add origin https://[user-name]@github.com/[user-name]/[project].git

1
Bạn có thể sử dụng ~/.netrctệp lưu trữ mật khẩu cho bạn nếu bạn muốn. Nó được sử dụng bởi curlgit sử dụng để truyền HTTP (S), trong trường hợp bạn cần tra cứu chi tiết cụ thể về cách sử dụng nó.
Arrowmaster

1
@Arrowmaster: lưu ý rằng nếu bạn đang sử dụng Windows, bạn cần sử dụng ~/_netrc(' _', không phải ' .')
VonC

Cảm ơn các ý kiến, tôi sẽ thử điều đó!
ken

Điều này đã làm việc cho tôi. Cảm ơn. Tôi tự hỏi liệu đây có phải là một lỗi hay không.
Trận chiến Larry

1

Tôi nghĩ rằng đó là một trường hợp khác của thông báo lỗi git gây hiểu lầm. Thông thường khi tôi gặp lỗi đó là do vấn đề ssh. Bạn đã thêm khóa ssh công khai vào tài khoản github của mình chưa?

Chỉnh sửa: Ngoài ra, bài đăng trên diễn đàn xinet.d đề cập đến việc chạy git-daemon như một dịch vụ để mọi người có thể lấy từ hệ thống của bạn. Không cần thiết phải chạy git-daemon để đẩy lên github.


1
Tôi đã thêm khóa công khai của mình vào tài khoản github của mình. - Sự cố bắt đầu sau khi tôi thêm một nhánh từ xa vào Git của mình.
Léo Léopold Hertz 준영

1
Tôi đã tạo một cặp khóa ssh mới. Tôi đã dán khóa mới vào Github và xóa khóa cũ khỏi Github. Vấn đề tương tự vẫn tồn tại.
Léo Léopold Hertz 준영

1

Tôi gặp sự cố tương tự và tôi vừa thêm nội dung của ~ / .ssh / id_rsa.pub vào tài khoản của mình trong GitHub. Sau đó chỉ cần thử lại git push origin master, nó sẽ hoạt động.


0

Điều quan trọng cần nhớ là 'origin' không phải là giá trị bạn có thể cần để sử dụng ... nó có tác dụng với tôi khi tôi thay thế 'origin' bằng tên repo.


0

Một khả năng mà các câu trả lời trên không giải quyết được là bạn có thể không có quyền truy cập ssh từ trình bao của mình. Có nghĩa là, bạn có thể đang ở trong một mạng (một số mạng đại học thực hiện điều này) nơi dịch vụ ssh bị chặn. Trong trường hợp đó, bạn không chỉ có thể nhận được dịch vụ github mà còn bất kỳ dịch vụ ssh nào khác. Bạn có thể kiểm tra xem đây có phải là vấn đề hay không bằng cách thử sử dụng bất kỳ dịch vụ ssh nào khác. Đây là trường hợp của tôi.


0

Tôi đã gặp sự cố này và đã thử các giải pháp khác nhau để giải quyết nó bao gồm nhiều giải pháp được liệt kê ở trên (tệp cấu hình, gỡ lỗi ssh, v.v.). Cuối cùng, tôi đã giải quyết nó bằng cách bao gồm chuyển đổi -u trong git push, theo hướng dẫn github khi tạo một kho lưu trữ mới tại chỗ - Github new Repository

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.