2011-01-08 32 views
6

Tôi làm việc với nhiều kho lưu trữ từ xa Git và mỗi kho chứa thông tin đăng nhập Git khác nhau (Tên và Thư).Làm cách nào để quản lý nhiều cấu hình người dùng trong Git?

Có giải pháp nào như tập lệnh hay thực tiễn tốt nhất về cách quản lý chúng không?

Tôi biết về "config --local", nhưng tôi không muốn đặt biến này theo cách thủ công mọi lúc.

+0

Xem thêm [Tôi có thể chỉ định nhiều người dùng cho chính mình trong .gitconfig?] (Http: // stackoverflow không.com/questions/4220416/can-i-specified-đa-người dùng-cho-mình-trong-gitconfig) –

Trả lời

10

Có vẻ như chỉ cần nói git config user.name (hoặc user.email) trong một kho lưu trữ cụ thể mà không cần chỉ định --global hoặc --system sẽ thực hiện thủ thuật. Mặc định là đặt cấu hình trong kho lưu trữ hiện tại, và thay vào đó bạn phải cung cấp cho nó các tùy chọn rõ ràng để nó ghi vào cấu hình mức người dùng hoặc toàn bộ hệ thống của bạn.

Tôi không biết làm thế nào người ta sẽ làm điều này nếu bạn mới nhân bản kho lưu trữ cần cấu hình khác nhau, mặc dù. Có lẽ bạn có thể viết một tập lệnh nhỏ kết thúc tốt đẹp git clone để sao chép một số kho lưu trữ, sau đó đặt cấu hình thích hợp dựa trên bất kỳ thông tin nào? Nếu bạn thả tập lệnh trong /usr/lib/git-core có tên giống như git-nclone, thì bạn có thể chạy tập lệnh dưới dạng git nclone.

Chỉnh sửa: Vì bạn không muốn đặt thủ công mọi lúc, cách một trình bao bọc bản sao ghi nhớ các bộ khác nhau bạn thực sự sử dụng và cho phép bạn chọn bộ thích hợp cho kho lưu trữ mà bạn nhân bản. Nó thậm chí có thể có mặc định thông minh dựa trên nơi bạn đang sao chép đến từ đó.

+1

thay đổi cấu hình cục bộ xuất hiện trong tệp .git/config – Abizern

+3

Nếu bạn có một số lượng lớn các cấu hình khác nhau, tôi Bạn nên bỏ cấu hình toàn cầu (~/.gitconfig) mà không cần cài đặt tên/email, để nếu bạn cố gắng cam kết trong một kho lưu trữ chưa được cấu hình, bạn sẽ nhận được một cảnh báo. Mặt khác, nếu bạn có hai cấu hình chính, hãy đặt cấu hình "an toàn" trên toàn cầu, sau đó ghi đè lên nó trong các bản repos riêng lẻ. – Cascabel

+1

Git nên kiểm tra toàn bộ '$ PATH' cho các tập tin thực thi có tên' git-foo', thực sự, vì vậy hãy thả nó vào '~/bin /' và chắc chắn rằng nó nằm trong '$ PATH' của bạn sẽ hoạt động tốt. – fow

0

Tôi tạo ra một vài bí danh đó trông như thế này:

Ý tưởng là tôi có thể lưu thông tin của tôi (email, tên người dùng) trong định nghĩa bí danh. Sau đó, khi tôi muốn sao chép hoặc khởi tạo, tôi không phải thực hiện một git config mỗi lần.

khi initialising:

initgithub = !git init && git config user.email [[email protected]] && git config user.name [yourgithubusername] 

initbitbucket = !git init && git config user.email [[email protected]] && git config user.name [yourbitbucketusername] 

khi nhân bản:

clonegithub = "!f() { git clone $1 $2; cd $2; git config user.email [[email protected]]; git config user.name [yourgithubusername]; }; f" 

clonebitbucket = "!f() { git clone $1 $2; cd $2; git config user.email [[email protected]]; git config user.name [yourbitbucketusername]; }; f" 

ussage:

khi initialising:

git initgithub

git initbitbucket

khi nhân bản:

git clonegithub https://github.com/pathtoproject.git/c/temp/somefolder/dự án

git clonebitbucket https://github.com/pathtoproject.git/c/temp/somefolder/dự án

Khi nhân bản bạn về cơ bản có thể tạo ra một hàm sẽ thực hiện cả thao tác sao chép bình thường và các hoạt động cấu hình. Hiện tại, nó yêu cầu bạn cung cấp đường dẫn đến thư mục mà bạn đang nhân bản để cấu hình các thông tin xác thực của bạn đúng cách.

Các vấn đề liên quan