2012-02-19 50 views
61

Tôi có ONE kho trên GitHub, chúng ta hãy gọi nó Repo-1.Chuyển đổi giữa các dạng người dùng trong một Git trên một máy tính

Tôi muốn truy cập kho lưu trữ đó trước tiên là người dùng Git mặc định.

Hãy gọi người dùng đó User-1.

Tôi đã tạo Khoá phím SSH, mọi thứ đều tốt, hoạt động tốt đẹp.


tôi đã KHÁC kho trên GitHub, chúng ta hãy gọi nó Repo-2.

I không thực hiện bất kỳ thay đổi nào trong Git cục bộ trên máy tính xách tay của tôi. Không có thay đổi cấu hình, không có gì.

Bây giờ - Tôi muốn bản sao từ Repo-1 như User-2 (nhưng so với cùng máy tính xách tay).

Trước hết: điều này có thể thực hiện được không?

Git cục bộ có thể trên một chuyển đổi máy tính xách tay duy nhất giữa "tài khoản người dùng" và hiển thị chính nó là User-2? Và sau đó, từ danh tính này, sao chép từ Repo-1, thực hiện một số thay đổi, và sau đó đẩy đến Repo-1?

Nếu có thể, làm cách nào để thực hiện điều đó?

+0

Khi nào bạn tạo User-2? Bạn có hai khóa bàn phím SSH không? –

+0

Xin chào Matthew! Đoán tôi làm. Tôi đã chỉ quản lý để làm điều này, vẫn không chắc chắn nếu điều này được thực hiện đúng. Tôi đã đi trực tiếp đến ~/.gitconfig (trong Windows là C: \ Users \ Martin \ .gitconfig) và thay đổi các tham số này: [user] name = USER 2 email = [email protected] [github] user = user2. Tôi đã không thay đổi mã thông báo - tôi đã để nguyên nó. Sau đó, tôi thêm repo user1 vào Git (có user2 identity). Nhân bản. Đã thay đổi tệp. Được tổ chức, cam kết và đẩy. Đã đi đến trang GitHub Repo1 và ở đó đó là: một cam kết từ một người dùng khác. BAO GIỜ ... liệu cách tiếp cận này có hợp lý không? – Martin

Trả lời

57

Bạn có toàn cầu .gitconfig nơi bạn đã định cấu hình Khóa SSH/Thông tin người dùng của mình. Toàn cầu .gitconfig bị ghi đè bởi gitconfig cục bộ - tệp "config" trong thư mục .git của bạn (nếu nó không tồn tại, bạn có thể phải tạo nó). Ví dụ: bạn có thể sao chép tệp .gitconfig vào thư mục .git (và đổi tên nó thành "config") và chỉ thay đổi các dòng bạn muốn thay đổi (có thể là github.user và github.token) hoặc bạn tạo một tập tin mới chỉ với hai dòng trong đó.

Nếu bạn thích dòng lệnh "git config", bạn có thể tránh tất cả các tệp di chuyển bằng cách bỏ qua tùy chọn "--global".

+2

Rất tốt, cảm ơn bạn. Tôi vừa thử nghiệm nó. Hai thư mục (cùng cấp, từng thư mục khác, thư mục 1 và thư mục2). Trong thư mục 1, các thiết lập mặc định trong tập tin cấu hình. Trong thư mục2 đã thay đổi cài đặt, bao gồm cả tên người dùng GitHub. Đã bắt đầu GitBash trong thư mục 1, clone -...- push, GitHub thấy một cam kết từ việc định nghĩa người dùng. Bắt đầu GitBash trong thư mục 2, clone -...- push, GitHub thấy một cam kết từ người dùng KHÁC. Làm việc như một sự quyến rũ, không cần phải thay đổi các thiết lập toàn cầu. Các thư mục khác nhau, người dùng khác nhau. Đúng thứ tôi cần. Cool, thanx một lần nữa! – Martin

+0

IMO, câu cuối cùng trong câu trả lời này là chìa khóa. Bởi vì nó có vẻ sạch hơn với tôi để cho phép git xử lý các công việc thay vì rối tung xung quanh với các tập tin chính mình. Dưới đây là hướng dẫn tuyệt vời về cấu hình git liên quan đến chủ đề này: https://help.github.com/articles/setting-your-commit-email-address-in-git/#setting-your-email-address -for-a-single-repository – AndyO

45

Bạn cần xác định xem bạn có thực sự có hai cặp khóa ssh hay chỉ hai email bạn muốn sử dụng. Một cặp khóa ssh được liên kết với các tài khoản như được mô tả here.

Cặp khóa ssh (cụ thể là khóa riêng), về cơ bản cho phép khách hàng git của bạn kết nối với github và do đó cho phép để đẩy. Điều này tách biệt với danh tính người dùng, đó chỉ là email trong thư cam kết của bạn.

Nếu bạn có hai cặp khóa ssh, mỗi cặp được liên kết với một tài khoản, hãy làm theo these hướng dẫn để tạo tệp ~/.ssh/config.Các phần quan trọng là sử dụng một ssh psuedo-host khác nhau cho mỗi tài khoản:

# Default GitHub user (joe) 
Host github.com 
    HostName github.com 
    User git 
    IdentityFile /Users/joe/.ssh/id_rsa 

# Client user (client) 
Host github-client 
    HostName github.com 
    User git 
    IdentityFile /Users/joe/.ssh/id_rsa_client 

Sau đó, bạn sử dụng hai điều khiển từ xa tương ứng:

git clone [email protected]:joe/my_repo.git 

git clone [email protected]:client/his_repo.git 

Nếu bạn chỉ muốn sử dụng hai email, bạn chỉ có thể cung cấp cho mỗi bản sao một .git/config riêng với cài đặt [user] mong muốn.

+0

Được rồi, thanx. Đây là một hướng dẫn nhỏ, chỉ là những gì tôi cần! Dù sao thì, tên người dùng GitHub thì sao? Tôi đã thêm vào các tệp .git/config hai tên người dùng GitHub khác nhau và giờ đây GitHub hiển thị các cam kết từ hai người dùng khác nhau. Nó có nghĩa là tôi đã tạo ra hai keypairs SSH trong những ngày trước đó (tôi thẳng thắn không nhớ nguyên nhân tôi đã làm rối tung rất nhiều) ...? Nếu không, GitHub sẽ không chấp nhận những cam kết từ người dùng thứ hai, tôi có nghĩ đúng không? – Martin

+0

@Martin, bạn có thể có hai email khác nhau mà bạn đang chuyển sang github thông qua một tài khoản. Đó có thể là những gì đang xảy ra nếu bạn không sử dụng hai tập tin nhận dạng. –

+0

Ồ, bây giờ câu trả lời cuối cùng này là về việc tiếp cận hai kho GitHub khác nhau ... tôi đã hiểu đúng chưa? Đó không phải là câu hỏi. Câu hỏi đặt ra là làm thế nào để truy cập vào một kho lưu trữ GitHub duy nhất và giới thiệu mình là 2 người dùng khác nhau. Giống như tôi và bạn tôi đều sử dụng cùng một máy tính xách tay, và đang làm việc trên cùng một dự án (cùng GitHub repo), chỉ vào buổi sáng tôi nhân bản và đẩy mạnh như Martin, và vào buổi tối anh ấy nhái và đẩy John. Cùng một máy tính cục bộ, với một cài đặt Git cục bộ, nhưng hai bản sắc tiếp cận một repo từ xa. – Martin

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