Làm cách nào để đảm bảo Git không hỏi tôi tên người dùng và mật khẩu GitHub của tôi?


172

Tôi đang làm việc với một repo trên GitHub và mỗi khi tôi cố gắng đẩy thứ gì đó, nó sẽ hỏi tên người dùng và mật khẩu GitHub của tôi. Tôi không muốn nó làm điều đó.

Tôi đã thử các hướng dẫn về cách đặt email của bạn trong Git , cụ thể là thiết lập các biến Git github.user và github.token, nhưng điều đó không tạo ra sự khác biệt nào.

Tôi không hiểu tại sao điều này lại xảy ra.


Câu trả lời:


33

Bạn cần thiết lập một ssh-agent mà bạn chỉ cần xác thực một lần. Xem câu trả lời này tại SO cho một hướng dẫn.


1
Nhưng giải pháp này là dành cho cụm từ ssh-gia đình. Vấn đề là git sử dụng "git đẩy" mà không kích hoạt tác nhân ssh, tôi giả sử. (Tôi đã thực hiện điều này, vì vậy tôi biết nó không hoạt động.)
picardo

2
@picardo: Tôi đã làm điều này, và nó thực sự hoạt động.
Daenyth

213

Có một vấn đề tương tự ngày hôm nay: Tôi đã làm hỏng mọi thứ trong bản sao làm việc của mình, vì vậy tôi quyết định đổi tên thư mục và sao chép lại dự án của mình từ github. Nhưng sau khi làm điều đó, tôi phải nhập mật khẩu của mình để thực hiện bất kỳ yêu cầu kéo / đẩy nào, thay vì nhập cụm mật khẩu chỉ một lần như trước đây.

Đó là bởi vì hôm nay tôi đã sử dụng giao thức https để sao chép dự án! Để kiểm tra giao thức nào bạn đang sử dụng chỉ cần chạy

git config -l

và nhìn vào dòng bắt đầu bằng 'remote.origin.url'.

Để chuyển đổi giao thức:

git config remote.origin.url git@github.com:the_repository_username/your_project.git

the_repository_usernameyour_projectnên được thay thế bằng tên kho lưu trữ thích hợp và chủ sở hữu của kho lưu trữ đó. Tên người dùng sẽ là của bạn nếu bạn sở hữu kho lưu trữ hoặc tên người dùng của kho lưu trữ khác.


5
Nó làm việc cho tôi. Một điều là url không chứa tên người dùng của tôi mà là địa chỉ repo như xuất hiện trên github:git@github.com:some-user/repo-name.git
B Bảy

1
Lưu ý: Google đã đưa tôi đến đây. Tôi đã remote.origin.urlthiết lập phương thức https và thậm chí không nhận thấy có phương thức httpsvs. sshURL này đã giúp tôi thấy rõ ràng: help.github.com/articles/ Kẻ
Chris K

Có cách nào để vượt qua nhập mật khẩu không?
zishe

Q cho những người có kiến ​​thức git: Bất kỳ sự khác biệt (hoặc ưu tiên) giữa git config remote.origin.url ...được sử dụng ở trên, so với git remote set-url origin ...?
Daryn

Tôi không thể tìm ra cách loại bỏ một nguồn gốc sai như thế. Câu trả lời là:git remote rm origin
Vacilando

30

Nếu bạn đang sử dụng HTTPS thay vì SSH, bạn có thể làm theo điều này:

  1. Tìm URL từ xa của bạn (remote.origin.url) với

    git config -l
    

    cảm ơn Sergio Morstabilini

  2. URL từ xa của bạn sẽ như thế này: https: // {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git

  3. Thực hiện lệnh này:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    

2
Tên người dùng của tôi chứa @, đã không làm việc cho tôi.
mã hóa_idiot

Nhưng nếu không (bạn không cần sử dụng email của mình) thì nó hoạt động hoàn hảo! Cảm ơn.
Killah

4
Nếu tên người dùng của bạn bao gồm @, bạn cần mã hóa URL. meyerweb.com/eric/tools/dencoder
Tim Bodeit

1
Bạn nên bỏ mật khẩu của bạn vì lý do bảo mật.
zygimantus

3
hãy cẩn thận, mật khẩu sẽ được lưu trữ trong văn bản đơn giản bên trong .git/configtệp!
Amro

26

Tôi thích sử dụng HTTPS, tôi thấy nó dễ dàng và an toàn hơn là thiết lập các phím ssh.

Sử dụng HTTPS, bạn có thể ngăn git hỏi tên người dùng của mình cho điều khiển từ xa github bằng cách sau:

git config --global url."https://yourusername@github.com".insteadOf "https://github.com"

Và ít nhất bạn có thể giảm tần suất git yêu cầu mật khẩu của bạn với:

git config --global credential.helper 'cache --timeout=28800'

Trong đó 28800 là 8 giờ. Tôi sử dụng thiết lập này để nhập mật khẩu chỉ một lần, khi tôi bắt đầu ngày làm việc.

Sau đó, bạn sẽ có những mục này bên trong của bạn ~/.gitconfig

[url "https://yourusername@github.com"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

Nguồn:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config


6

Khi bạn thiết lập khóa ssh cho github, nếu đó không phải là khóa mặc định của bạn, bạn sẽ cần thêm một phần vào ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa

6

Nếu bạn đang sử dụng Windows bằng HTTPS, hãy thử Cửa hàng Thông tin Git - nó sử dụng Cửa hàng Thông tin Windows để giữ tên và mật khẩu của bạn.

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

Sau đó, lần tiếp theo bạn nhập tên và mật khẩu, nó sẽ ghi nhớ chúng cho bạn.


1
Cảm ơn bạn. Dự án được đổi tên thành Git-Credential-Manager-for-Windows .
Michael S.

5

Ngoài ra, nếu bạn muốn được nhắc nhập mật khẩu của mình mọi lúc, nhưng không phải tên người dùng của bạn, thì bạn định cấu hình điều khiển từ xa dưới dạng HTTPS với tên người dùng .. Giống như thế này ..

git config remote.origin.url https://USERNAME@github.com/repo_owner/repo_name

Sau này, bạn sẽ được nhắc nhập mật khẩu mỗi lần, nhưng không phải tên người dùng của bạn.

Đây là cách tôi thích nó, vì tôi thích bị buộc phải nhập mật khẩu github của mình trước khi chia sẻ với mọi người.


2

Mọi thứ sẽ khác một chút nếu bạn sử dụng auth 2 yếu tố như tôi. Vì tôi không tìm thấy câu trả lời hay ở nơi nào khác, tôi sẽ dán một câu ở đây để có thể tôi có thể tìm thấy câu trả lời sau.

Nếu bạn đang sử dụng xác thực 2 yếu tố, thì việc chỉ định tên người dùng / mật khẩu sẽ không hoạt động - bạn sẽ bị từ chối truy cập. Nhưng bạn có thể sử dụng mã thông báo truy cập ứng dụng và sử dụng trình trợ giúp thông tin xác thực của git để lưu trữ bộ đệm đó cho bạn. Dưới đây là các liên kết thích hợp:

Và tôi không nhớ tôi đã thấy cái này ở đâu nhưng khi bạn hỏi Tên người dùng của bạn - đó là nơi bạn dán mã thông báo truy cập ứng dụng. Sau đó để trống mật khẩu. Làm việc trên máy mac của tôi.


2

sử dụng SSH

Để ngăn GitHub yêu cầu mật khẩu trong khi đẩy, lý tưởng nhất là bạn nên sử dụng SSH ( git@github.com:...) thay vì URL HTTPS ( https://github.com/...) và thêm khóa SSH vào tài khoản GitHub của bạn . Xem: Tôi nên sử dụng URL từ xa nào?

GitHub - Sao chép bằng SSH

một người trợ giúp thông tin

Mặt khác, nếu bạn thực sự cần sử dụng HTTPS, để lưu mật khẩu GitHub trong Git , bạn nên sử dụng trình trợ giúp thông tin xác thực để bảo Git nhớ tên người dùng và mật khẩu GitHub của bạn mỗi khi nó nói chuyện với GitHub.

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helperlà bắt buộc),
  • Các cửa sổ: git config --global credential.helper wincred
  • Linux và khác: git config --global credential.helper cache

.netrc

Một phương pháp khác là sử dụng cấu hình người dùng / mật khẩu của bạn trong ~/.netrc( _netrctrên Windows), vd

machine github.com
login USERNAME
password PASSWORD

Ôi

Sử dụng mã thông báo OAuth ( mã thông báo API cá nhân ) để thúc đẩy các thay đổi, ví dụ:

git push https://4UTHT0KEN@github.com/foo/bar

Liên quan:


1

Ngoài ra nếu bạn đang sử dụng Windows, bạn có thể sử dụng:

$ git config --global credential.helper wincred

bạn chỉ cần đăng nhập thêm một lần nữa rồi git sẽ nhớ.


1

Yêu cầu tên người dùng gây khó chịu cho tôi, nhưng yêu cầu mật khẩu là tốt vì nó đảm bảo bạn thực sự muốn công khai với các thay đổi của mình ...

Vì vậy, tôi chỉ cần thêm nó vào ".gitconfig" của tôi

[url "https://myusername@github.com"]
    insteadOf = https://github.com

0

Sử dụng Trình quản lý thông tin Git cho Windows , nếu bạn đang ở trên Windows.

Dự án này bao gồm :

  • Lưu trữ mật khẩu an toàn trong Cửa hàng Thông tin Windows
  • Hỗ trợ xác thực đa yếu tố cho Visual Studio Team Services
  • Hỗ trợ xác thực hai yếu tố cho GitHub
  • Hỗ trợ sử dụng và tạo mã thông báo truy cập cá nhân cho Dịch vụ nhóm Visual Studio và GitHub
  • Hỗ trợ chế độ không tương tác cho Visual Studio Team Services được Azure Directory hỗ trợ
  • Xác thực Kerberos cho Team Foundation Server
  • Cài đặt tùy chọn để tối ưu hóa đại lý xây dựng

Đơn giản chỉ cần tải về phiên bản mới nhất và cài đặt nó.

Cách sử dụng

Bạn không. Nó hoạt động kỳ diệu khi thông tin cần thiết.

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.