Làm thế nào để nhập lệnh với mật khẩu cho git pull?


139

Tôi muốn thực hiện lệnh này trong một dòng:

git pull && [my passphrase]

Làm thế nào để làm nó?


bạn có thể thay đổi mật khẩu của bạn để có sản phẩm nào bằng cách làm theo này: help.github.com/articles/working-with-ssh-key-passphrases
jacerate

1
Bạn có thể bỏ qua nhu cầu nhập cụm mật khẩu nếu bạn chạy tác nhân ssh. Lần đầu tiên bạn thực hiện thao tác kéo git, bạn thực hiện tương tác và nhân viên ssh sẽ nhớ khóa riêng của bạn và bạn có thể chạy git pull mà không cần được nhắc.
Tim Finer

Câu trả lời:


161

Đây không phải là chính xác những gì bạn yêu cầu, nhưng đối với http (s):

  • bạn có thể đặt mật khẩu trong tệp .netrc (_netrc trên windows). Từ đó nó sẽ được chọn tự động. Nó sẽ đi đến thư mục nhà của bạn với 600 quyền.
  • bạn cũng có thể sao chép repo https://user:pass@domain/reponhưng điều đó không thực sự được khuyến khích vì nó sẽ hiển thị người dùng / vượt qua của bạn ở nhiều nơi ...
  • một tùy chọn mới là sử dụng trình trợ giúp thông tin xác thực . Lưu ý rằng thông tin đăng nhập sẽ được lưu trữ trong văn bản rõ ràng trong cấu hình cục bộ của bạn bằng cách sử dụng trình trợ giúp thông tin chuẩn. người trợ giúp thông tin với wincred cũng có thể được sử dụng trên windows.

Ví dụ sử dụng cho người trợ giúp thông tin

  • git config credential.helper store - lưu trữ các thông tin vô thời hạn.
  • git config credential.helper 'cache --timeout=3600'- cửa hàng trong 60 phút

Để truy cập dựa trên ssh, bạn sẽ sử dụng tác nhân ssh sẽ cung cấp khóa ssh khi cần. Điều này sẽ yêu cầu tạo khóa trên máy tính của bạn, lưu trữ khóa chung trên máy chủ từ xa và thêm khóa riêng vào kho khóa có liên quan.


1
Bạn có thể giải thích về phần SSH không? Tôi đang cấu hình một phiên bản EC2 và tôi muốn nó kéo mà không yêu cầu mật khẩu của tôi và tự động AWS. Chương trình công cộng / riêng tư này trông giống như một giải pháp tốt.
Pedro Dusso

1
@PedroDusso nghe có vẻ như chủ đề này là những gì bạn đang theo đuổi
eis

2
tôi đã kết thúc bằng cách sử dụng cơ chế khóa triển khai, dường như là một giải pháp tốt. Cảm ơn!
Pedro Dusso

129

Tôi đã tìm thấy một cách để cung cấp thông tin đăng nhập cho kết nối https trên dòng lệnh. Bạn chỉ cần xác định URL hoàn chỉnh để git pull và bao gồm thông tin đăng nhập ở đó:

git pull https://username:password@mygithost.com/my/repository

Bạn không cần phải lưu trữ bản sao với thông tin đăng nhập trước, điều này có nghĩa là thông tin đăng nhập của bạn không kết thúc .git/config. (Nhưng hãy chắc chắn rằng trình bao của bạn không phản bội bạn và lưu trữ dòng lệnh trong tệp lịch sử.)


mật khẩu không bắt buộc và điều này không an toàn để viết mật khẩu theo cách này
sao băng

Đây không phải là một trong những điều tôi liệt kê trong câu trả lời được chấp nhận, đã có trong năm 2012?
eis

8
@eis: Không chính xác. Vấn đề là bạn không cần sao chép kho lưu trữ với URL bao gồm thông tin đăng nhập, nhưng vẫn có thể lấy từ URL bằng thông tin đăng nhập. Hiệu quả là thông tin đăng nhập không kết thúc trong tệp .git / config.
holgero

5
Nếu bạn bỏ qua :passwordphần này, bạn sẽ được nhắc nhập mật khẩu sau khi nhấn enter. Bằng cách đó, mật khẩu của bạn sẽ không được lưu trong lịch sử bash.
Matthias Fischer

1
Có @PramodGarg sử dụng - tên người dùng git pull : password@mygithost.com/my/reposective.git Chi nhánh
PAVITRA

39

Không trả lời trực tiếp câu hỏi, nhưng về cơ bản, tôi đã tìm thấy câu hỏi này khi tìm cách để không nhập lại mật khẩu mỗi lần tôi kéo máy chủ từ xa .

Vâng, gitcho phép bạn lưu trữ thông tin đăng nhập của bạn trong một khoảng thời gian hữu hạn. Nó có thể tùy chỉnh git configvà trang này giải thích rất rõ:

https://help.github.com/articles/caching-your-github-password-in-git/#pl platform-linux

Trong một thiết bị đầu cuối, chạy:

$ git config --global credential.helper cache
# Set git to use the credential memory cache

Để tùy chỉnh thời gian chờ bộ đệm, bạn có thể làm:

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

Thông tin đăng nhập của bạn sau đó sẽ được lưu trữ trong bộ nhớ trong khoảng thời gian được yêu cầu.


5

Lưu ý rằng cách "lưu trữ" trình trợ giúp thông tin git sẽ lưu trữ các thay đổi mật khẩu không được mã hóa với Git 2.5+ (quý 2 năm 2014).
Xem cam kết 17c7f4d của Junio ​​C Hamano ( gitster)

credential-xdg

Tinh chỉnh mẫu " store" phụ trợ của trình trợ giúp thông tin để tôn vinh các vị trí tệp cấu hình XDG khi được chỉ định.

Các tài liệu bây giờ nói:

Nếu không được chỉ định:

  • thông tin đăng nhập sẽ được tìm kiếm từ ~/.git-credentials$XDG_CONFIG_HOME/git/credentials, và
  • thông tin đăng nhập sẽ được viết cho ~/.git-credentialsnếu nó tồn tại hoặc $XDG_CONFIG_HOME/git/credentialsnếu nó tồn tại và trước đây không tồn tại.

0

Dưới đây cmd sẽ hoạt động nếu chúng tôi không có mật khẩu @: git pull https://username:pass@word@mygithost.com/my/repository Nếu bạn có mật khẩu @ thì hãy thay thế bằng% 40 như hình dưới đây: git pull https://username:pass%40word@mygithost.com/my/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.