2011-05-24 10 views
90

Tôi sử dụng máy tính xách tay cá nhân của mình cho cả công việc và dự án cá nhân và tôi muốn sử dụng địa chỉ email công việc của mình cho cam kết tại nơi làm việc (gitolite) và địa chỉ email cá nhân của tôi cho phần còn lại (github).Làm thế nào để yêu cầu git sử dụng danh tính (tên và email) chính xác cho một dự án cụ thể?

Tôi đọc về các giải pháp sau đó là tất cả hoặc là toàn cầu hoặc tạm thời:

Một giải pháp là chạy thủ công hàm vỏ đặt môi trường của tôi thành hoạt động hoặc cá nhân, nhưng tôi khá chắc chắn rằng tôi thường quên chuyển sang danh tính chính xác dẫn đến việc nhận dạng sai.

Có cách nào để ràng buộc một kho lưu trữ, tên dự án, v.v ... cho một danh tính (tên, email) không? Mọi người làm gì?

+1

Tôi yêu cầu bạn vui lòng chấp nhận một trong các câu trả lời. Tôi hy vọng một trong số họ chắc chắn đã giúp bạn giải quyết vấn đề của mình. – RBT

Trả lời

105

git config user.email "[email protected]"

Làm điều đó một bên trong một repo sẽ thiết lập cấu hình trên RẰNG repo, và không toàn cầu.

Có vẻ như đó là khá nhiều những gì bạn đang theo dõi, trừ khi tôi đang hiểu sai bạn.

+0

Tôi đoán rằng nên làm điều đó. Tôi hy vọng sẽ có nhiều kho lưu trữ cục bộ cho cùng một dự án, đáng chú ý là để chuyển đổi giữa các nhánh dễ dàng hơn mà không phải biên dịch lại mọi thứ. Có lẽ nó chỉ là một thói quen svn xấu. Cảm ơn. –

+1

@ Martin - Tôi đã không sử dụng git thực sự lâu, nhưng ý nghĩa tôi nhận được là sử dụng nhiều repos địa phương sẽ là một công việc bất thường cho git. Mặc dù vậy, bạn chỉ cần chạy nó một lần trên một phiên bản của repo, và nó được thiết lập cho tuổi thọ của repo đó, vì vậy nó không quá tệ. –

+0

@DanRay Trên thực tế, thiết lập chung nếu như trong trường hợp Martin, repo cục bộ có các tệp không được cam kết cục bộ. Chuyển đổi từ một nhánh này sang nhánh khác sẽ không tự động xây dựng lại các tệp. Nếu tránh "để biên dịch lại mọi thứ" là một mục tiêu, sử dụng nhiều repos địa phương là cách chính xác để làm điều đó. – dolmen

16

Nếu bạn sử dụng git config user.email "[email protected]" nó sẽ được ràng buộc với dự án hiện tại bạn đang ở.

Đó là những gì tôi làm cho các dự án của tôi. Tôi thiết lập danh tính thích hợp khi tôi sao chép/init repo. Nó không phải là chống lừa đảo (nếu bạn quên và đẩy trước khi bạn tìm ra nó bạn đang bị hosed) nhưng nó là về tốt như bạn có thể nhận được mà không có khả năng nói git config --global user.email 'ILLEGAL_VALUE'

Thực ra, bạn có thể làm cho một giá trị bất hợp pháp. Đặt git config --global user.name $(perl -e 'print "x"x968;')

Sau đó, nếu bạn quên đặt các giá trị không toàn cầu của mình, bạn sẽ nhận được thông báo lỗi.

[EDIT] Trên một hệ thống khác, tôi phải tăng số lượng x lên 968 để làm cho nó không thành công với "số tử vong: Định danh cá nhân dài không thể nhận biết". Cùng phiên bản git. Lạ thật.

+0

Nghe có vẻ giống như một thủ thuật tuyệt vời nhưng nó không hiệu quả với tôi. Cả hai cam kết và đẩy đến gitolite từ xa đã thành công. –

+0

@Martin Jambon: Lạ. Tôi đang sử dụng phiên bản git 1.7.4.5 –

+0

@Martin Jambon: Bạn cũng có thể thử đặt tên người dùng/địa chỉ email chung thành "x". Một số phiên bản cũ hơn của git đã từ chối các giá trị quá nhỏ. Báo cáo phiên bản git/os bạn có nếu điều này không hoạt động. –

7

Nếu bạn không sử dụng tham số --global, nó sẽ chỉ đặt biến cho dự án hiện tại.

20

Chỉnh sửa các tập tin cấu hình với trong ".git" thư mục để duy trì tên người dùng và địa chỉ email khác nhau phụ thuộc vào kho

  • Chuyển đến reposotory bạn
  • Hiện các file ẩn và goto".git" thư mục
  • Tìm "config" tập tin
  • Thêm các dòng dưới đây vào EOF

[user]

name = Bob

email = [email protected]

Lệnh dưới đây cho bạn biết tên người dùng và email nào được đặt cho bản repos này itory.

git config --get user.name

git config --get user.email

Ví dụ: đối với tôi rằng tập tin cấu hình trong D: \ workspace \ eclipse \ ipchat \. git \ config

đây ipchat là tên repo của tôi

21

Bạn cần phải sử dụng địa phương tập lệnh dưới đây:

bộ địa phương

git config user.email [email protected] 
git config user.name 'Mahmoud Zalt' 

địa phương có được

git config --get user.email 
git config --get user.name 

Các tập tin cấu hình địa phương là trong thư mục dự án: .git/config.

bộ toàn cầu

git config --global user.email [email protected] 
git config --global user.name 'Mahmoud Zalt' 

toàn cầu được

git config --global --get user.email 
git config --global --get user.name 

Các tập tin cấu hình toàn cầu trong trong thư mục chính của bạn: ~/.gitconfig.

Ghi trích dẫn khoảng trống, vv, ví dụ: 'FirstName LastName'

1

Tính đến Git 2.13 bạn có thể sử dụng một includeIf trong gitconfig bạn để bao gồm một tập tin với một cấu hình khác nhau dựa trên các con đường của kho lưu trữ ở đâu bạn đang chạy lệnh git của mình.

Khi tôi tự động làm việc, tôi sẽ cập nhật với một ví dụ tốt hơn.

https://motowilliams.com/conditional-includes-for-git-config#disqus_thread

Để sử dụng Git 2.13 bạn có sẽ cần phải thêm một PPA (Ubuntu/Debian) hoặc tải về những chương trình và cài đặt (Windows/Linux khác).

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