Xử lý sự cố
HTTPS
Lỗi “Permission denied (publickey)” khi kết nối với kho lưu trữ từ xa bằng SSH
Trước hết, bạn sẽ muốn đảm bảo những điều sau:
- URL có đúng không?
- Khóa bí mật có được định cấu hình chính xác trong máy cục bộ không?
- Khóa công khai có được định cấu hình chính xác trong máy từ xa không?
Bạn có thể xác minh cấu hình khóa công khai/bí mật tương ứng với kho lưu trữ từ xa Backlog bằng cách chạy lệnh sau:
$ ssh <space>@<space>.git.backlog.com
Thay <space>
bằng không gian Backlog mà bạn sở hữu (ví dụ: cho không gian demo.backlog.com
, sẽ là demo@demo.git.backlog.com
)
Nếu cài đặt đúng, bạn sẽ thấy đầu ra sau. Nếu bạn thấy thông báo lỗi, hãy lặp lại các bước trên và đảm bảo rằng bạn đang làm đúng.
Hi yourname! You've successfully authenticated, but Backlog does not provide
shell access.
Connection to git.backlog.com closed.
Không thể sao chép kho lưu trữ từ xa qua URL HTTPS của nó
Trên các phiên bản Git cũ hơn, đôi khi bạn có thể gặp sự cố khi thực hiện thao tác đẩy hoặc kéo. Bạn nên sử dụng phiên bản Git mới nhất hoặc cao hơn v2. Nếu bạn đang sử dụng ứng dụng khách Git chẳng hạn như Source Tree hoặc TortoiseGit, hãy sử dụng phiên bản Git đi kèm với ứng dụng khách tương ứng.
Tôi được yêu cầu nhập mật khẩu mỗi khi tôi đẩy/kéo từ kho lưu trữ từ xa
Bạn có thể tránh nhập mật khẩu nhiều lần bằng cách định cấu hình như sau.
Windows
Bạn có thể sử dụng git-credential-winstore, nó sẽ chỉ hỏi mật khẩu của bạn trong lần đầu tiên bạn đẩy/kéo.
Mac
Bạn có thể sử dụng Sourcetree (mà chúng tôi đã trình bày trong chương trước) để liên kết với Mac Keychain. Điều này sẽ cho phép Git tìm ra thông tin đăng nhập nào sẽ sử dụng mỗi khi bạn kéo hoặc đẩy.
Bảng điều khiển
Trên Mac, bạn có thể sử dụng API thông tin đăng nhập Git để liên kết tên người dùng/mật khẩu với các thao tác Git. Nếu bạn sử dụng Homebrew, API thông tin xác thực Git được cài đặt tự động. Nếu không, bạn sẽ phải cài đặt thủ công.
Bạn có thể kiểm tra xem API thông tin xác thực đã được cài đặt chưa bằng lệnh bên dưới.
$ git credential-osxkeychain
Usage: git credential-osxkeychain <get|store|erase>
Nếu API thông tin xác thực chưa được cài đặt, bạn sẽ thấy đầu ra bên dưới.
$ git credential-osxkeychain
git: 'credential-osxkeychain' is not a git command. See 'git --help'.
Trong trường hợp đó, bạn có thể tải xuống và di chuyển các tệp vào /usr/local/bin.
$ curl -s -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
$ chmod u+x git-credential-osxkeychain
$ mv git-credential-osxkeychain /usr/local/bin
Sau khi hoàn tất cài đặt, hãy chạy lệnh sau bên dưới để kích hoạt API thông tin xác thực.
git config --global credential.helper osxkeychain
Các thay đổi được đẩy tới kho lưu trữ từ xa không được phản ánh ở đó
Bạn có thể bắt gặp tin nhắn sau khi thực hiện thao tác đẩy. Điều đó thường xảy ra khi bạn đang đẩy từ một kho lưu trữ cục bộ mới.
$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'main'.
Everything up-to-date
Bằng cách bỏ qua tên nhánh khi thực hiện đẩy, theo mặc định, Git sẽ cho rằng bạn đang cố đẩy thay đổi hiện tại sang nhánh từ xa có cùng tên với nhánh cục bộ. Điều này xảy ra nếu nhánh chính chưa được tạo trong kho lưu trữ từ xa. (Chúng ta đang đẩy từ nhánh chính cục bộ.) Trong trường hợp này, chúng ta sẽ phải sử dụng rõ ràng tên nhánh khi thực hiện thao tác đẩy.
$ git push -u origin main
Bằng cách đó, nhánh chính sẽ được tạo tự động trong kho lưu trữ từ xa. Lần tới khi bạn chạy thao tác đẩy, bạn có thể bỏ qua tên nhánh.