điều này nghe rất giống với công việc hiện tại của tôi được thiết lập. có vẻ như bạn đã thiết lập tệp riêng ssh-keys
nên bạn cũng cần tạo ~/.ssh/config
tệp và điền vào tệp đó với thông tin tương tự như sau:
Host work.github.com
HostName github.com
User WORK_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_rsa
IdentitiesOnly yes
Host personal.github.com
HostName github.com
User PERSONAL_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_personal_rsa
IdentitiesOnly yes
Mỗi tài sản nghe có vẻ khá tự giải thích nhưng IdentitiesOnly
một. Tôi sẽ không cố gắng giải thích điều đó để làm gì, nhưng đó là trong thiết lập hiện tại của tôi và hoạt động tốt.
Cũng cần lưu ý rằng Host URL
nó chỉ là một con trỏ để lấy cài đặt người dùng chính xác và không có bất kỳ ảnh hưởng nào đến việc đưa các tệp chính xác đến HostName
url mục tiêu của bạn .
Bây giờ bạn chỉ cần đảm bảo url của bạn origin
(hoặc bất kỳ remote
nói chung) nào khớp với Host
url chính xác trong các kho lưu trữ tương ứng của bạn tùy thuộc vào tên người dùng của bạn. Nếu bạn đã có các kho lưu trữ cá nhân hiện có, bạn có thể chỉnh sửa .git/config
tệp của kho lưu trữ đó trong trình soạn thảo văn bản của mình:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
hoặc làm điều đó thông qua dòng lệnh:
git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
Tương tự như vậy đối với công việc của bạn:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@work.github.com:your_work_organization/project.git
hoặc một lần nữa, thông qua dòng lệnh:
git remote set-url origin git@work.github.com:your_work_organization/project.git
Tất nhiên, bạn luôn có thể đặt một trong Host
các url trong ~/.ssh/config
tệp của mình là
Host github.com
Tôi chỉ sử dụng work.github.com
để xem các mối quan hệ cấu hình dễ dàng hơn.
Khi tất cả các điều này đã được thiết lập, bạn sẽ có thể đẩy đến từng điều khiển từ xa tương ứng.
BIÊN TẬP
Một điều cần lưu ý mà tôi vừa phát hiện ra là nếu bạn đã từng đặt giá trị cấu hình git chung cho giá trị của mình user.email
(và tôi đoán user.name
cũng sẽ gửi một giá trị khác), git sẽ hiển thị cam kết của bạn với tư cách là người dùng email đó. Để giải quyết vấn đề này, bạn có thể ghi đè cài đặt cấu hình git chung trong kho lưu trữ cục bộ của mình:
$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
Điều này bây giờ sẽ gửi cam kết với tư cách là người dùng chính xác cho repo đó.