đ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-keysnên bạn cũng cần tạo ~/.ssh/configtệ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 IdentitiesOnlymộ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 URLnó 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 HostNameurl 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ỳ remotenói chung) nào khớp với Hosturl 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/configtệ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 Hostcác url trong ~/.ssh/configtệ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.namecũ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 đó.