Git: Vui lòng cho tôi biết bạn là ai


226

Tôi có các máy chủ ứng dụng mà tôi tự khởi động cùng nhau bằng cách sử dụng Chef + một số tập lệnh bash ad-hoc. Vấn đề là, khi tôi muốn chạy một bản cập nhật trên một trong những máy chủ ứng dụng này, tôi nhận được:

19:00:28: *** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

Tôi có thực sự cần phải thiết lập điều này để thực hiện đơn giản git pull origin mastermỗi khi tôi cập nhật máy chủ ứng dụng không? Có cách nào để ghi đè hành vi này để nó không bị lỗi khi tên và email không được đặt không?


3
Từ những gì tôi đã gặp không, nhưng một lần nữa tôi thấy không có vấn đề gì với việc chỉ thêm tên và email của bạn ngay cả khi chúng chỉ là tên giả và email.
sean

10
Có, bạn phải đặt những thứ này, nếu "đơn giản" git pullsẽ tạo ra một cam kết, chẳng hạn như nó đã hợp nhất.
fork0

1
Bạn mô tả kịch bản triển khai một chiều. Tôi sẽ không thêm thông tin đăng nhập để tránh mọi cam kết tự động hóa. Có, bạn sẽ thấy vấn đề với lỗi này, nhưng điều này có nghĩa là ai đó đang chọc vào sản xuất và thay đổi các tệp kích hoạt thủ công hợp nhất.
Alex Skrypnyk

Câu trả lời:


249

Tôi dành nó rất nhiều giờ khi tôi gọi tập lệnh php để khởi tạo và cam kết git. Và tôi đã tìm thấy luồng công việc nên:

1.git init
2.git config user.name "someone"
3.git config user.email "someone@someplace.com"
4.git add *
5.git commit -m "some init msg"

Nếu bạn trao đổi [23] và 1, cấu hình sẽ không hoạt động.

Mong muốn điều này sẽ làm một số trợ giúp.


Đây là cách thực hành chính xác để khởi tạo một kho lưu trữ git. Nhưng để cập nhật giải pháp repo @gfxmonk thì tốt hơn
Davisein

Bạn có thể giải thích nó hoạt động như thế nào và tại sao nó lại báo lỗi trước khi làm điều này không?
Chinmaya B

1
Bạn có thể thêm --globalchuyển đổi vào git configcác lệnh và thực hiện một lần cho tài khoản HĐH của bạn. Sau đó bước 2-3 không cần thiết.
x-yuri

50

Thay vì làm một git pull, bạn có thể làm:

git fetch
git reset --hard origin/master

Không ai trong số họ yêu cầu bạn định cấu hình tên người dùng / email git của bạn.

Điều này sẽ phá hủy mọi thay đổi / cam kết cục bộ không được cam kết và sẽ khiến ĐẦU của bạn trỏ đến một cam kết (không phải là một nhánh). Nhưng cả hai điều đó đều không phải là vấn đề đối với máy chủ ứng dụng vì bạn không nên thực hiện thay đổi cục bộ hoặc cam kết với kho lưu trữ đó.


Việc tự động hóa git pull rất nguy hiểm trong tình huống này, tốt hơn là nên thiết lập lại.
Davisein

Nó sẽ không tốt hơn để sử dụng git fetch && git reset --hard HEAD?
jacoor

@jacoor nope: git reset --hard HEADchỉ ném đi những thay đổi uncomitted của bạn, nó không thay đổi những gì cam kết không gian làm việc của bạn được dựa trên (vì theo định nghĩa bạn đã vào HEAD)
gfxmonk

33

Nếu bạn đang sử dụng sourcetree: Kho lưu trữ -> Cài đặt kho lưu trữ -> Nâng cao -> bỏ chọn hộp "Sử dụng cài đặt người dùng toàn cầu"

làm việc tuyệt vời cho tôi


trong trường hợp của tôi, tôi đã phải kiểm tra lại, nhưng dù sao đi nữa! Cảm ơn sự giúp đỡ của bạn
Karoly

32

nó hoạt động với tôi, hãy thử cái này .. bạn cần cấu hình thiết bị đầu cuối của mình với quyền truy cập từ xa.

     git config --global user.name "abc"
     git config --global user.email "abc@example.com"

10

Cập nhật quy trình bootstrap của bạn để tạo một ${HOME}/.gitconfignội dung phù hợp hoặc sao chép nội dung hiện có từ một nơi nào đó.


9
git config user.email "insert github email here"
git config user.name "insert github real name here"

Nó hiệu quả tuyệt vời đối với tôi.


4

Vấn đề tương tự xảy ra với tôi và giải quyết nó bằng cách thêm tên mặc định và email Cài đặt kho lưu trữ.

Như Doron đề nghị -

Nếu bạn đang sử dụng sourcetree: Kho lưu trữ -> Cài đặt kho lưu trữ -> Nâng cao -> bỏ chọn hộp "Sử dụng cài đặt người dùng toàn cầu".

Thêm tên và địa chỉ email mặc định.


4

Trong trường hợp của tôi, tôi đã thiếu chữ "e" trong từ "email" như Chad đã nói ở trên nhưng tôi thấy đó không phải là trường hợp của bạn. Vui lòng nhấn lệnh sau để xem mọi thứ có được kéo như mong đợi không.

git config -l

4

Bạn phải viết email của bạn như thế

 git config --global user.email "you@example.com"

Sau đó: Viết tên người dùng

 git config --global user.name "Your Name"

Sau đó cửa sổ Poupup sẽ xuất hiện

Viết USERNAME & EMAIL cho Acount BẠN muốn đóng góp


3

Đối với tôi, vấn đề là kết nối mạng, một khi tôi kết nối lại với wifi của mình, nó có thể tìm nạp các chi tiết và cam kết mà không gặp vấn đề gì.


2

Tôi có thực sự cần phải thiết lập điều này để thực hiện một bản gốc git pull đơn giản mỗi khi tôi cập nhật máy chủ ứng dụng không? Có cách nào để ghi đè hành vi này để nó không bị lỗi khi tên và email không được đặt không?

Nó sẽ hỏi chỉ một lần và đảm bảo rằng khóa công khai rsa cho máy này được thêm vào tài khoản github của bạn mà bạn đang cố gắng thực hiện hoặc chuyển yêu cầu kéo.

Thông tin thêm về điều này có thể được tìm thấy: Tại đây


1
Liên kết bị hỏng
Alice Schwarze

2

Tôi đã gặp lỗi này như một thông báo lỗi:
git pullhoạt động tốt trên dòng cmd
git pullkhông thành công trong quy trình Perl CGI (một webhook để tự động triển khai từ github) với lỗi trên.

Làm một git statustập tin xác định xung đột. Sắp xếp nó đã khắc phục vấn đề.

Vấn đề trở lại sau này khi tôi thay đổi một số cài đặt cấu hình.

Lần này, cài đặt $ HOME và $ USER env vars đã sửa nó (không được đặt mặc định trong quy trình CGI)


2

Có một cái nhìn vào tập tin cấu hình.

Kho lưu trữ> Cài đặt kho lưu trữ> Chỉnh sửa tập tin cấu hình.

Kiểm tra nếu [user]phần tồn tại. Nếu phần người dùng bị thiếu, thêm nó.

Thí dụ:

[user]
name = "your name"
email = "your email"

2

tôi sử dụng heroku cli 1. phải sử dụng tất cả tên người dùng và email người dùng

$ git config - email người dùng.email .login.

$ git config - tên người dùng toàn cầu.name .heroku tên.

  1. git kéo [url git]
  2. git init
  3. thêm git *

    Cam kết 5 git -m "sau cấu hình user.name, email người dùng"

  4. git đẩy heroku master


2

Tôi sử dụng Jenkins và gặp phải vấn đề này khi cố gắng thực hiện một bản phát hành (yêu cầu một cam kết git). Để khắc phục sự cố, tôi cần thêm địa chỉ email / tên người dùng tùy chỉnh (xem hình) Tên người dùng / địa chỉ email tùy chỉnhĐiều này đảm bảo rằng khi kiểm tra mã, nó đã sử dụng địa chỉ email / tên người dùng xây dựng của tôi khi thực hiện phát hành. Lưu ý, cấu hình này có sẵn từ cấu hình dự án Jenkins Multibranch Pipeline.


2

git pullkhông nên yêu cầu điều này Tuy nhiên, nếu kéo gây ra xung đột hợp nhất, thì nó có vẻ không cần thiết.


2

IMHO, cách thích hợp để giải quyết lỗi này là định cấu hình tệp cấu hình git toàn cầu của bạn.

Để làm điều đó chạy lệnh sau: git config --global -e

Một trình soạn thảo sẽ xuất hiện nơi bạn có thể chèn cấu hình git mặc định của mình.

Dưới đây là một vài:

[user]
    name = your_username
    email = your_username@users.noreply.github.com 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

Để biết thêm chi tiết, xem Tùy chỉnh cấu hình Git - Git

Khi bạn thấy một lệnh như, git config...

$ git config --global core.whitespace \
    trailing-space,space-before-tab,indent-with-non-tab

... bạn có thể đặt nó vào tệp cấu hình git toàn cầu của mình dưới dạng:

[core]
   whitespace = space-before-tab,-indent-with-non-tab,trailing-space

Đối với một cấu hình tắt, bạn có thể sử dụng một cái gì đó như git config --global user.name 'your_username'

Nếu bạn không đặt cấu hình git của mình trên toàn cầu, bạn sẽ cần phải làm như vậy cho từng repo git mà bạn làm việc với cục bộ.

Cài đặt user.name và user.email cho git biết bạn là ai, vì vậy các git commitlệnh tiếp theo sẽ không phàn nàn,*** Please tell me who you are.

Nhiều lần, các lệnh git gợi ý bạn chạy không phải là thứ bạn nên chạy. Lần này, các lệnh được đề xuất không phải là xấu:

$ git commit -m 'first commit'

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

Mẹo: Cho đến khi tôi rất quen thuộc với git, tạo bản sao lưu tệp dự án của mình - trước khi chạy các lệnh git được đề xuất và khám phá những thứ tôi nghĩ sẽ hoạt động - đã lưu thịt xông khói của tôi trong nhiều lần.


2

Nó không thể tự động phát hiện địa chỉ email.

Theo mặc định, nó có tên người dùng hệ thống của bạn như thế nào abc@xyz.none.

Vì vậy, bạn cần đặt email của bạn như dưới đây:

git config user.email "someone@gmail.com"

Sau khi thiết lập email, bạn có thể chạy các lệnh git và cam kết thay đổi của mình.

  1. git init
  2. thêm git *
  3. git commit -m "một số thông điệp init"

1

Tôi gặp phải thông báo lỗi này trong khi cố gắng cam kết một số tệp.

Đơn giản chỉ cần chạy git fetchsau đó thử lại cam kết của tôi làm việc cho tôi.


0

Để khắc phục, tôi sử dụng: git config --global user.email "you@example.com" và hoạt động.

user.mail không có việc gì, có cần đặt E. Typo không?


Tôi nghĩ OP muốn biết liệu điều này có thực sự cần thiết cho mỗi bản cập nhật hay không.
tbrk

-5

Đó là một lỗi đánh máy. Bạn đã vô tình đặt "user.mail" không có " e ". Khắc phục bằng cách đặt "user. E mail" trong cấu hình toàn cầu với

git config - người dùng toàn diện.email "you@example.com"

Tìm giải pháp tại đây

https://stackoverflow.com/a/14662703


3
Nơi nào bạn thấy "'user.mail' không có 'e'" trên trang này?
Chad Nouis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.