Nhân bản một repo Github riêng


226

Tôi có một kho lưu trữ riêng trên Github cho một dự án tôi đang làm. Cho đến bây giờ tôi chỉ làm việc trên máy tính để bàn ở nhà, nhưng tôi mới mua một chiếc máy tính xách tay và tôi đang cố gắng thiết lập nó để tôi có thể làm việc với dự án từ một trong hai máy tính và thay đổi đẩy / kéo.

Tôi đã thêm khóa SSH mới vào tài khoản Github của mình cho máy tính xách tay và đã thành công trong việc nhân bản và thực hiện các thay đổi đối với bản thử nghiệm công khai mà tôi đã thiết lập. Tuy nhiên, tôi không thể sao chép repo riêng. Có điều gì đặc biệt tôi cần phải làm trong dòng lệnh để sao chép một repo riêng không? Tôi có cần thiết lập tài khoản GitHub mới cho máy tính xách tay của mình và tự thiết lập làm cộng tác viên không?

Lệnh tôi đã sử dụng là git clone git://github.com/myusername/reponame.git


3
Lệnh nào bạn đã sử dụng để thử nhân bản repo riêng tại địa phương? Bạn đã mắc lỗi gì?
Ron DeVera

Câu trả lời:


171

URL bản sao riêng tư có dạng git@github.com:username/repo.git- có lẽ bạn cần sử dụng git@hơn là git://?

git:// Các URL chỉ được đọc và có vẻ như các repos riêng không cho phép hình thức truy cập này.


Có - sử dụng "git@github.com:" thay vì "https: //" đã giải quyết vấn đề của tôi! Trên thực tế tôi đã kích hoạt 2FA cùng một lúc nhưng điều đó không liên quan gì.
leo

148

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

git clone https://username@github.com/username/repo_name

Tất nhiên, điều này là sau khi thêm khóa SSH của tôi vào Github . Tôi đã sử dụng cái này trên máy chủ CentO, nếu cần thiết.


4
cảm ơn vì điều đó. Nhưng tôi không biết tại sao điều này lại hiệu quả. Không bao giờ được nhắc nhập mật khẩu. Git có nên sao chép qua https theo bất kỳ cách nào chạm vào phím ssh của tôi không? Tôi nghĩ là không.
Reinhardt

1
Thật tuyệt, nó khiến tôi có thể tải xuống một repo riêng trên Ubuntu.
Nino kopac

Tại sao điều này hoạt động nhưng git@github.com: tên người dùng / repo.git không?
diimdeep

@diimdeep Git và các công cụ khác, thường sử dụng giao thức git: để truy cập các tệp trong kho từ xa. Một số cấu hình tường lửa đang chặn git: // URL, dẫn đến lỗi khi cố gắng sao chép kho lưu trữ hoặc phụ thuộc tải xuống. . ".insteadOf git: //
charlchad

1
Trong một số trường hợp, nếu bạn được nhắc nhập mật khẩu và sau đó bị từ chối truy cập, có thể là do bạn cần cung cấp "mã thông báo truy cập cá nhân" thay vì mật khẩu đăng nhập GitHub của bạn. [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/ trộm
David Winiecki

71

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

git clone https://username:password@github.com/username/repo_name.git

5
đây là vấn đề với mật khẩu ký tự đặc biệt, để lại mật khẩu của bạn trong nhật ký và dường như không hoạt động nữa
pcnate

5
Hãy thử điều này - Bạn sẽ được nhắc nhập mật khẩu tài khoản của bạn. Không phải lo lắng về việc nhập mật khẩu vào lịch sử hoặc nhật ký. git clone https://username@github.com/username/repo_name.git
Vinay

64

Tôi đã gặp vấn đề này nhiều lần và mỗi lần tôi vào trang này, đã thử mọi cách và đều thất bại!

Đó là vì tôi đã kích hoạt 2FA !!!

Theo https://help.github.com/articles/which-remote-url-should-i-use/#when-2fa-is-enables

Nếu bạn đã bật  xác thực hai yếu tố hoặc nếu bạn đang truy cập vào một tổ chức sử dụng  đăng nhập một lần SAML , bạn phải  cung cấp mã thông báo truy cập cá nhân  thay vì nhập mật khẩu cho HTTPS Git.

  1. Theo liên kết này và tạo mã thông báo truy cập
  2. git clone https://github.com/username/repo_name.git (Liên kết git repo mặc định là đủ tốt!)
  3. Nhập tên người dùng của bạn và sử dụng mã thông báo truy cập làm mật khẩu !!

Cập nhật:

  • Nếu bạn không để lộ mã thông báo truy cập của mình trong dòng lệnh, bạn cũng có thể dán mã thông báo truy cập làm tên người dùng, sau đó nhấn enter (không cần mật khẩu).
  • Ghét sao chép và dán mã thông báo truy cập nhiều lần?
    Sử dụng git config credential.helper store(không làm điều này trên máy bạn không tin tưởng)

Nếu bạn đang ở trên Windows, bạn có thể cài đặt github.com/microsoft/Git-Credential-Manager-for-Windows Sau đó, khi nhân bản một kho lưu trữ riêng tư, cửa sổ UI với thông tin đăng nhập Github xuất hiện. Nó cũng sẽ cho phép bạn điền mã 2FA. Thông tin đăng nhập Github của bạn sẽ được lưu trữ an toàn.
Jirik

18

Sử dụng Git cho Windows sẽ dễ dàng hơn khi sử dụng url HTTPS.

Mở vỏ git rồi git clone https://github.com/user/repo. Nhập tên người dùng và mật khẩu khi được nhắc. Không cần thiết lập khóa SSH.


1
Tôi đồng ý với sự đơn giản của việc không phải thiết lập ssh
Félix Gagnon-Grenier

Đồng ý với các nhận xét khác, chỉ cần sử dụng url HTTPS hoạt động hoàn hảo trên Windows hoặc Ubuntu (đã thử vào ngày
116.04

18

Đối với tôi giải pháp là:

git clone https://myusername@restoftherepolink.git

Ở đây bạn cần phải là chủ sở hữu của repo nhưng nếu bạn không thì nó sẽ đi như

git clone https://myusername@github.com/ownersusername/repo_name.git

Nếu bạn có2FA enabled thì:

  1. Chuyển đến cài đặt từ biểu tượng hồ sơ ở trên cùng bên phải hoặc truy cập https://github.com/sinstall/profile
  2. Chuyển đến tab dưới cùng hoặc truy cập https://github.com/sinstall/tokens
  3. Mở tab cuối cùng ở đây Mã thông báo cá nhân. Và tạo mã thông báo
  4. Sao chép mã thông báo và chạy git clone https://myusername@restoftherepolink.git

Khi được nhắc nhập mật khẩu, hãy đặt mã thông báo đó vào đây. Hình ảnh tạo mã thông báo ở đây


1
trông giống như git nhắc tên người dùng / mật khẩu nếu không có kho lưu trữ công khai với URI đó, vì vậy lệnh đầu tiên là chính xác
pcnate

8

Tôi có tài khoản công ty (riêng tư) và 2-Factor-xác thực được bật, vì vậy tôi phải kết hợp một vài bài đăng để làm cho nó hoạt động như dưới đây. (Ghi lại để nó có thể hữu ích cho người có cùng hoàn cảnh)

Initially it was the Fatal Error. 
fatal: repository 'https:
...
remote: Repository not found.
fatal: repository 'https:

Đã cài đặt trình quản lý thông tin xác thực và cập nhật GIT như được đề cập tại đây: https://codeshare.co.uk/blog/how-to-solve-the-github-error-firth-httprequestexception-enc gặp /

Điều đó không giải quyết được vấn đề khi vấn đề chuyển sang bên dưới khi tôi thử sử dụng lệnh clone như sau:

$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

remote: Invalid username or password.
fatal: Authentication failed for 'https://

Mật khẩu của tôi có ký hiệu $ trong đó và vì một số lý do, dòng lệnh GIT / GIT Bash không thích nó. Tôi có thể thấy điều này trên văn bản trả về lỗi không có ký hiệu $ trong đó.

fatal: Authentication failed for 'https://<username>:<password-missing-$-symbol>@github.com/<ORG_NAME>/<PROJECT-NAME>.git'

Tôi đã phải tham khảo trang web này: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

Xin lưu ý: Nếu mật khẩu không chính xác được lưu trữ cho tài khoản của bạn trong Trình quản lý thông tin Windows, nó cũng sẽ gây thêm vấn đề. Tôi đã xóa thông tin xác thực github được lưu trữ theo cách này trước khi chuyển sang bước bên dưới.

$ git config --global credential.helper cache
$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

Bây giờ trình quản lý Thông tin Windows đã bật lên. Tôi đã nhập tên người dùng và mật khẩu của mình vào các hộp văn bản (Điều này chấp nhận mật khẩu của tôi có ký hiệu $) và nhắc tôi nhập mã Xác thực 2 yếu tố. Tôi đã nhập mã xác thực từ Google Authenticator và bản sao bắt đầu hoàn hảo.


Biểu tượng đô la $là một ký tự dành riêng trong Unix. Nó đánh dấu sự bắt đầu của việc truy xuất một giá trị biến với tên đó bằng với chuỗi theo sau $ký hiệu.
Hãy để tôi nói về nó vào

Đối với tôi, việc xóa Windows Credentials đã khắc phục sự cố.
Michael Larionov

6

Khi nhân bản từ repos riêng với kích hoạt 2FA, có một bước đơn giản mà bạn cần phải làm theo

  1. Chuyển đến tài khoản Git của bạn
  2. Chuyển đến Cài đặt-> Cài đặt dành cho nhà phát triển-> Mã thông báo truy cập cá nhân
  3. Nhấp vào Tạo mã thông báo mới
  4. Tạo mã thông báo với tiêu đề bạn muốn và với các chức năng
  5. Khi bạn đang nhân bản repo riêng, bằng cách sử dụng git clone repoName, sau khi nhập tên người dùng của bạn, hãy cấp mã thông báo truy cập cá nhân làm mật khẩu.

Thực hiện theo các bước tương tự khi bạn nhận được thông báo lỗi xác thực cho repo riêng


5

Để trả lời câu trả lời của mac, bạn có thể lấy URL bản sao SSH trên trang repo github của mình, bằng cách nhấp SSHvào You can clone with HTTPS, SSH, or Subversion.và sao chép URL.


4

Điều này làm việc cho tôi trên mac git clone https://username@github.com:username/repo_name


3

Ngoài câu trả lời của MK Yung: hãy đảm bảo bạn thêm khóa chung cho bất cứ nơi nào bạn triển khai vào các khóa triển khai cho repo, nếu bạn không muốn nhận được phản hồi 403 Bị cấm.


3

Trước tiên, hãy đảm bảo rằng bạn có khóa SSH hoặc tạo một khóa tại: https://help.github.com/articles/generating-ssh-keys/

Khi bạn đã có khóa của mình, bạn phải thêm nó vào tài khoản github của mình tại: https://github.com/sinstall/ssh

Đối với người dùng Windows, thật hữu ích khi chạy git bash với tư cách quản trị viên.

Bây giờ nhân bản nên hoạt động cho các kho riêng (repo), mà không cần phải đặt tên người dùng và mật khẩu của bạn.



1

Nếu máy tính mới được sử dụng có thông tin khác nhau chạy lệnh này

git clone https://github.com/username/reponame.git

trực tiếp sẽ không làm việc. Git sẽ cố gắng sử dụng thông tin đăng nhập được lưu trữ và sẽ không nhắc bạn tên người dùng và mật khẩu. Vì thông tin không khớp, git sẽ xuất ra Repository not foundvà thao tác sao chép không thành công. Cách tôi giải quyết là bằng cách xóa thông tin đăng nhập cũ, vì tôi không sử dụng chúng nữa và chạy lại lệnh được đề cập ở trên và nhập tên người dùng và mật khẩu bắt buộc và nhân bản repo riêng.


1

1) thử chạy lệnh với tên người dùng và mật khẩu ở định dạng dưới đây

git clone https://your_username:your_password@github.com/username/reponame.git

Bây giờ vấn đề như những người khác đã đề cập ở đây là khi chúng ta có ký tự đặc biệt trong mật khẩu của mình. Trong Javascript, sử dụng mã bên dưới để chuyển đổi mật khẩu với các ký tự đặc biệt sang mã hóa UTF-8.

console.log(encodeURIComponent('password@$123'));

bây giờ sử dụng mật khẩu được tạo này thay vì mật khẩu có ký tự đặc biệt và lệnh chạy.

Hy vọng vấn đề này giải quyết.



0

Nếu bạn chắc chắn rằng bạn không kích hoạt 2FA, bạn có quyền truy cập repo và repo tồn tại, có thể git@github.com của bạn đã đăng nhập bằng tài khoản khác.

để kiểm tra xem bạn có thể làm gì

ssh -T git@github.com

Nếu nó hiển thị một tài khoản khác, để giải quyết vấn đề này:

 ssh-add -D
 ssh-add ~/.ssh/your_rsa
 ssh -T git@github.com
 git clone git@github.com:<owner_name>/<repo_name>.git

Nó hiển thị : unknown option -T. Phiên bản git của tôi là2.7.4
bvdb

@bvdb lời xin lỗi của tôi, đáng lẽ phải thếssh -T git@github.com
Kexin Lu

0

Nếu bạn muốn đạt được nó trong Dockerfile, dưới đây dòng giúp.

ARG git_personal_token
RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/"
RUN git clone https://github.com/your/project.git /project

Sau đó, chúng ta có thể xây dựng với đối số dưới đây.

docker build --build-arg git_personal_token={your_token} .

0
git clone https://myusername:mygithubpassword@github.com/myusername/project.git

Khi bạn đang cố gắng sử dụng repo riêng từ repo tại thời điểm bạn cần chuyển tên người dùng và mật khẩu cho điều đó.


Điều này không an toàn. Repo nhân bản lưu trữ liên kết http được cung cấp trong tệp .git / config. Tất cả các cam kết được thực hiện cho repo cục bộ có thể được đẩy đến từ xa mà không yêu cầu tên người dùng và mật khẩu. Điều này thực sự nguy hiểm nếu bạn không phải là người dùng duy nhất !!
Tian
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.