2012-07-20 39 views
84

Tôi đang cố gắng để thực hiện một số thay đổi như một người dùng khác nhau, nhưng tôi không có một địa chỉ email hợp lệ, sau lệnh không làm việc cho tôi:git commit sử dụng như nhau không có email/hoặc chỉ gửi email cho

git commit --author="john doe" -m "some fix" 
fatal: No existing author found with 'john doe' 

tôi có cùng một vấn đề khi cố gắng để thực hiện chỉ với một địa chỉ email

git commit --author="[email protected]" -m "some fix" 
fatal: No existing author found with '[email protected]' 

Trên trang git người đàn ông cho lệnh cam kết nó nói tôi có thể sử dụng

standard A U Thor <[email protected]> format 

Đối với tùy chọn --author.

Định dạng này được định nghĩa ở đâu? A và U là gì? làm thế nào để tôi cam kết cho một người dùng khác với chỉ một tên người dùng hoặc chỉ một email?

+1

* AU * không đại diện cho bất cứ điều gì, nó chỉ là một ví dụ: * AU Thor * => * Tác giả * => * Tác giả * . Bạn có thể chỉ định bất kỳ thứ gì bạn muốn làm tên. –

+1

Tôi biết rằng A U Thor tạo thành Tác giả, tôi đã tự hỏi liệu có bất kỳ ý nghĩa nào trong sự tách biệt hay không. –

+0

Không, có bất kỳ. –

Trả lời

22

Các

chuẩn Một U Thor < tác giả @ ví dụ.com > định dạng

Có vẻ phải được xác định như sau: (như xa như tôi biết, hoàn toàn không có bảo hành)

AU Thor = cần username

  • Việc tách các các ký tự có thể là cho biết rằng dấu cách được cho phép, nó cũng có thể giống như chữ cái đầu.
  • Tên người dùng phải được theo sau bởi 1 không gian, không gian bổ sung này sẽ được cắt ngắn

<[email protected]> = địa chỉ email tùy chọn

  • Phải luôn luôn được giữa < > dấu hiệu .
  • Định dạng địa chỉ email không được xác nhận, bạn có thể khá nhiều vào bất cứ điều gì bạn muốn
  • Tùy chọn, bạn có thể bỏ qua điều này một cách rõ ràng bằng cách sử dụng <>

Nếu bạn không sử dụng cú pháp này chính xác, git sẽ tìm kiếm thông qua các cam kết hiện có và sử dụng cam kết đầu tiên chứa chuỗi được cung cấp của bạn.

Ví dụ:

  1. Chỉ tên người dùng

    Bỏ qua địa chỉ email một cách rõ ràng:

    git commit --author="John Doe <>" -m "Impersonation is evil." 
    
  2. Chỉ email

    Về mặt kỹ thuật này là không thể. Tuy nhiên, bạn có thể nhập địa chỉ email làm tên người dùng và bỏ qua địa chỉ email một cách rõ ràng. Điều này không có vẻ như nó rất hữu ích. Tôi nghĩ rằng sẽ có ý nghĩa hơn nữa khi trích xuất tên người dùng từ địa chỉ email và sau đó sử dụng tên đó làm tên người dùng. Nhưng nếu bạn phải:

    git commit --author="[email protected] <>" -m "Impersonation is evil." 
    

Tôi chạy vào này khi cố gắng để chuyển đổi một kho lưu trữ từ lanh lợi để git. Tôi đã thử nghiệm các lệnh trên msysgit 1.7.10.

32

Định dạng cụ thể là:

git commit --author="John Doe <[email protected]>" -m "Impersonation is evil." 
+0

Tại sao nó không yêu cầu mật khẩu của John Doe nếu bạn cam kết cho tên của mình? – Narek

+2

@Narek Điều gì sẽ xảy ra trong ngữ cảnh này? – pmr

5

Format

A U Thor <[email protected]> 

chỉ đơn giản có nghĩa là bạn nên xác định

FirstName MiddleName LastName <[email protected]> 

Hình như giữa và tên cuối cùng là không bắt buộc (có lẽ phần trước email không có định dạng nghiêm ngặt). Hãy thử, ví dụ, điều này:

git commit --author="John <[email protected]>" -m "some fix" 

Như các tài liệu nói:

--author=<author> 
     Override the commit author. Specify an explicit author using the standard 
     A U Thor <[email protected]> format. Otherwise <author> is assumed to 
     be a pattern and is used to search for an existing commit by that author 
     (i.e. rev-list --all -i --author=<author>); the commit author is then copied 
     from the first such commit found. 

nếu bạn không sử dụng định dạng này, xử lý git cung cấp chuỗi như là một mô hình và cố gắng tìm phù hợp với danh tiếng trong tác giả của các cam kết khác.

+0

Không có thứ gì như * FirstName MiddleName LastName *. Xem [this] (http://stackoverflow.com/questions/11579311/git-commit-as-different-user-without-email-or-only-email#comment15320898_11579311). –

98

Các tối thiểu định dạng tác giả yêu cầu, như ám chỉ đến trong this SO answer, là

Name <email> 

Trong trường hợp của bạn, điều này có nghĩa là bạn muốn viết

git commit --author="Name <email>" -m "whatever" 
bình luận

mỗi Willem D'Haeseleer, nếu bạn không có địa chỉ email, bạn có thể sử dụng <>:

git commit --author="Name <>" -m "whatever" 

A s được viết trên git commit man page mà bạn đã liên kết, nếu bạn cung cấp bất kỳ thứ gì nhỏ hơn, nó được sử dụng làm mã thông báo tìm kiếm để tìm kiếm thông qua các cam kết trước đó, tìm kiếm các cam kết khác của tác giả đó.

+21

Chỉ cần phát hiện ra rằng nếu bạn không có địa chỉ email, bạn cũng có thể chỉ cần nhập "name <>", để để trống một cách rõ ràng thay vì nhập không có thật. –

+0

Nếu bạn sử dụng '" name <> "', và 'git commit --amend' sau, nó sẽ thất bại với lỗi' invalid ident'; vì vậy chỉ cần không – sanmai

+1

Dường như ngay cả khi sử dụng tùy chọn đó, bạn vẫn cần phải đặt user.email và user.name trong cấu hình git của bạn, nếu không git than phiền. – qwertzguy

2

Chỉ cần bổ sung:

git commit --author = "[email protected]" -m "Mạo danh là ác."

Trong một số trường hợp, các cam kết vẫn thất bại và cho bạn thấy thông báo sau:

*** Xin vui lòng cho tôi biết bạn là ai.

Run

git config --global user.email "[email protected]" git config --global user.name "Your Name"

để thiết lập nhận dạng mặc định của tài khoản của bạn. Bỏ qua - chỉ để thiết lập danh tính chỉ trong kho lưu trữ này.

gây tử vong: không thể đến địa chỉ email tự động dò tìm (có xxxx)

Vì vậy, chỉ cần chạy "config git", sau đó "git commit"

-4

Nếu bạn đang cam kết Github bạn không cần một email thật bạn có thể sử dụng <username>@users.noreply.github.com

bất kể sử dụng Github hay không, bạn có thể đầu tiên muốn thay đổi committer bạn chi tiết (trên cửa sổ sử dụng SET GIT_...)

GIT_COMMITTER_NAME='username' 
GIT_COMMITTER_EMAIL='[email protected]' 

Sau đó thiết lập các tác giả

git commit --author="username <[email protected]>" 

https://help.github.com/articles/keeping-your-email-address-private

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