Git: ข้อผิดพลาด“ โปรดบอกฉันว่าคุณเป็นใคร”


226

ฉันมีเซิร์ฟเวอร์แอปที่ฉันบู๊ตร่วมกันโดยใช้ Chef + สคริปต์เฉพาะกิจทุบตี ปัญหาคือเมื่อฉันต้องการเรียกใช้การอัปเดตบนหนึ่งในเซิร์ฟเวอร์แอปเหล่านี้ฉันได้รับ:

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"

ฉันจำเป็นจริงๆที่จะตั้งค่านี้สำหรับการทำที่ง่ายgit pull origin masterทุกครั้งที่ผมปรับปรุงเซิร์ฟเวอร์แอป? อย่างไรก็ตามมีการแทนที่ลักษณะการทำงานนี้จึงไม่เกิดข้อผิดพลาดเมื่อไม่มีการตั้งชื่อและอีเมล


3
จากสิ่งที่ฉันไม่พบ แต่จากนั้นอีกครั้งฉันไม่เห็นปัญหาใด ๆ เพียงแค่เพิ่มชื่อและอีเมลของคุณแม้ว่าจะเป็นเพียงชื่อปลอมและอีเมล
ฌอน

10
ใช่คุณต้องตั้งค่าเหล่านี้ถ้า "ง่าย" git pullจะสร้างคอมมิชชันเพราะมันทำการผสานตัวอย่างเช่น
fork0

1
คุณอธิบายสถานการณ์ของการปรับใช้แบบทางเดียว ฉันจะไม่เพิ่มข้อมูลประจำตัวเพื่อหลีกเลี่ยงการกระทำอัตโนมัติ ใช่คุณจะเห็นปัญหาเกี่ยวกับข้อผิดพลาดนี้ แต่นี่จะหมายความว่ามีใครบางคนแหกคอกไปรอบ ๆ การผลิตและการเปลี่ยนแปลงไฟล์ที่จะทำการผสานด้วยตนเอง
Alex Skrypnyk

คำตอบ:


249

ฉันใช้เวลากับมันนานหลายชั่วโมงเมื่อฉันเรียกสคริปต์ php เพื่อเริ่มต้นและคอมไพล์คอมไพล์ และฉันพบกระบวนการทำงานที่ควรจะเป็น:

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"

หากคุณสลับ [23] และ 1 การตั้งค่าจะไม่ทำงานเลย

หวังว่านี่จะช่วยได้บ้าง


นี่คือการปฏิบัติที่ถูกต้องเพื่อเริ่มต้นพื้นที่เก็บข้อมูลคอมไพล์ แต่สำหรับการอัปเดตโซลูชัน repo @gfxmonk นั้นดีกว่า
Davisein

คุณสามารถอธิบายได้ว่ามันทำงานอย่างไรและทำไมมันถึงให้ข้อผิดพลาดก่อนทำสิ่งนี้?
Chinmaya B

1
คุณสามารถเพิ่ม--globalสวิตช์เป็นgit configคำสั่งและทำหนึ่งครั้งสำหรับบัญชีระบบปฏิบัติการของคุณ หลังจากนั้นไม่จำเป็นต้องทำตามขั้นตอนที่ 2-3
x-yuri

50

แทนที่จะทำ a git pullคุณสามารถทำได้:

git fetch
git reset --hard origin/master

ไม่ต้องกำหนดค่าชื่อผู้ใช้ / อีเมล git ของคุณ

สิ่งนี้จะทำลายการเปลี่ยนแปลง / การกระทำในท้องถิ่นที่ไม่ผูกมัดและจะทำให้หัวหน้าของคุณชี้ไปที่การกระทำ (ไม่ใช่สาขา) แต่สิ่งเหล่านี้ไม่ควรเป็นปัญหาสำหรับเซิร์ฟเวอร์แอปเนื่องจากคุณไม่ควรทำการเปลี่ยนแปลงในพื้นที่หรือยืนยันที่เก็บข้อมูลนั้น


การดึง git อัตโนมัติเป็นสิ่งที่อันตรายในสถานการณ์นี้มันจะดีกว่าถ้าทำการรีเซ็ต
Davisein

มันจะไม่ดีกว่าที่จะใช้git fetch && git reset --hard HEAD?
jacoor

@jacoor nope: git reset --hard HEADเพียงแค่ละทิ้งการเปลี่ยนแปลงที่ไม่ได้รับการอ้างถึงของคุณมันจะไม่เปลี่ยนแปลงสิ่งที่กระทำในเวิร์กสเปซของคุณขึ้นอยู่กับ (เนื่องจากตามคำนิยามที่คุณมีอยู่แล้วใน HEAD)
gfxmonk

33

หากคุณใช้ sourcetree: Repository -> Repository Settings -> Advanced -> ยกเลิกการเลือกช่อง "Use global user settings"

ทำงานได้ดีสำหรับฉัน


ในกรณีของฉันฉันต้องตรวจสอบอีกครั้ง แต่ต่อไป! ขอบคุณสำหรับความช่วยเหลือของคุณ
Karoly

32

มันใช้งานได้สำหรับฉันลองนี่สิ .. คุณต้องกำหนดค่าเทอร์มินัลของคุณด้วยการเข้าถึงระยะไกล

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

10

อัปเดตกระบวนการบูตของคุณเพื่อสร้าง${HOME}/.gitconfigเนื้อหาที่เหมาะสมหรือคัดลอกสิ่งที่มีอยู่จากที่อื่น


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

มันใช้งานได้ดีสำหรับฉัน


4

ปัญหาเดียวกันอยู่กับฉันและแก้ไขมันโดยการเพิ่มชื่อเริ่มต้นและการตั้งค่าที่เก็บอีเมล

ดังที่โดรอนแนะนำ -

หากคุณใช้ sourcetree: Repository -> Repository Settings -> Advanced -> ยกเลิกการเลือกช่อง "Use global user settings"

เพิ่มชื่อเริ่มต้นและที่อยู่อีเมล


4

ในกรณีของฉันฉันหายไป "e" ในคำว่า "อีเมล" ตามที่ชาดระบุไว้ข้างต้น แต่ฉันเห็นว่าไม่ใช่กรณีนี้กับคุณ กรุณากดคำสั่งต่อไปนี้เพื่อดูว่าทุกอย่างดึงตามที่คาดไว้

git config -l

4

คุณต้องเขียนอีเมลของคุณเช่นนั้น

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

จากนั้น: เขียนชื่อผู้ใช้

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

หลังจากหน้าต่าง Poupup นั้นจะปรากฏขึ้น

เขียนUSERNAME & EMAIL สำหรับจำนวนที่คุณต้องการมีส่วนร่วม


3

สำหรับฉันปัญหาคือการเชื่อมต่อเครือข่ายเมื่อฉันเชื่อมต่อกับ wifi ของฉันอีกครั้งมันสามารถดึงรายละเอียดและกระทำได้โดยไม่มีปัญหาใด ๆ


2

ฉันจำเป็นต้องตั้งค่านี้เพื่อทำต้นแบบต้นกำเนิดการดึง git แบบง่าย ๆ ทุกครั้งที่ฉันอัปเดตเซิร์ฟเวอร์แอปหรือไม่ อย่างไรก็ตามมีการแทนที่ลักษณะการทำงานนี้จึงไม่เกิดข้อผิดพลาดเมื่อไม่มีการตั้งชื่อและอีเมล

มันจะถามเพียงครั้งเดียวและตรวจสอบให้แน่ใจว่ามีการเพิ่มคีย์สาธารณะ rsa สำหรับเครื่องนี้ผ่านบัญชี Github ที่คุณพยายามส่งหรือส่งคำขอดึง

ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้สามารถพบได้: ที่นี่


1
ลิงค์ใช้งานไม่ได้
Alice Schwarze

2

ฉันนี้เป็นข้อผิดพลาดข้อผิดพลาด:
git pullทำงานได้ดีในบรรทัด cmd
git pullล้มเหลวในกระบวนการ Perl CGI (webhook เพื่อปรับใช้อัตโนมัติจาก GitHub) กับข้อผิดพลาดดังกล่าวข้างต้น

ทำgit statusไฟล์ clashing ที่ระบุ การเรียงลำดับแก้ไขปัญหาได้

เกิดปัญหาขึ้นอีกในภายหลังเมื่อฉันเปลี่ยนการตั้งค่าบางอย่าง

เวลานี้การตั้งค่า $ HOME และ $ USER env vars จะแก้ไข (ไม่ได้กำหนดไว้เป็นค่าเริ่มต้นในกระบวนการ CGI)


2

ลองดูที่ไฟล์ปรับแต่ง

ที่เก็บ> การตั้งค่าที่เก็บ> แก้ไขไฟล์กำหนดค่า

ตรวจสอบว่า[user]ส่วนที่มีอยู่ หากส่วนผู้ใช้หายไปเพิ่ม

ตัวอย่าง:

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

2

ฉันใช้ heroku cli 1. ต้องใช้ชื่อผู้ใช้และอีเมลผู้ใช้ทั้งหมด

$ git config - ผู้ใช้ทั่วโลกอีเมล. อีเมล

$ git config - ชื่อผู้ใช้ทั่วโลกชื่อ. heroku

  1. git pull [git url]
  2. git init
  3. git เพิ่ม *

    5 git commit -m "หลังจากกำหนดค่า user.name, อีเมลผู้ใช้"

  4. git push heroku master


2

ฉันใช้ Jenkins และพบปัญหานี้เมื่อพยายามทำการเผยแพร่ (ซึ่งต้องมีคอมมิทคอม) ในการแก้ไขปัญหาฉันต้องเพิ่มชื่อผู้ใช้ที่กำหนดเอง / ที่อยู่อีเมล (ดูรูป) ชื่อผู้ใช้ที่กำหนดเอง / ที่อยู่อีเมลเพื่อให้แน่ใจว่าเมื่อรหัสถูกตรวจสอบแล้วมันใช้ชื่อ / ที่อยู่อีเมลของผู้ใช้เมื่อสร้างรุ่น หมายเหตุการกำหนดค่านี้สามารถใช้ได้จากการกำหนดค่าโครงการ Jenkins Multibranch Pipeline


2

git pullไม่ควรต้องการสิ่งนี้ อย่างไรก็ตามหากการดึงทำให้เกิดข้อขัดแย้งในการผสานมันก็ดูเหมือนว่าเป็นสิ่งจำเป็น


2

IMHO วิธีที่เหมาะสมในการแก้ไขข้อผิดพลาดนี้คือกำหนดค่าไฟล์ git config ทั่วโลกของคุณ

ในการทำเช่นนั้นให้เรียกใช้คำสั่งต่อไปนี้: git config --global -e

ตัวแก้ไขจะปรากฏขึ้นซึ่งคุณสามารถแทรกการกำหนดค่า git เริ่มต้นได้

นี่คือบางส่วน:

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

สำหรับรายละเอียดเพิ่มเติมโปรดดูการปรับแต่ง Git - การกำหนดค่า Git

เมื่อคุณเห็นคำสั่งเช่นgit config...

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

... คุณสามารถใส่มันลงในไฟล์ git config ทั่วโลกของคุณเป็น:

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

สำหรับการกำหนดค่าหนึ่งครั้งคุณสามารถใช้สิ่งที่ต้องการ git config --global user.name 'your_username'

หากคุณไม่ได้ตั้งค่าการตั้งค่า git ทั่วโลกคุณจะต้องทำเช่นนั้นสำหรับทุก ๆ git repo ที่คุณทำงานด้วย

การตั้งค่า user.name และ user.email บอก git ว่าคุณคือใครดังนั้นgit commitคำสั่งที่ตามมาจะไม่บ่น*** Please tell me who you are.

หลายครั้งคำสั่ง git แนะนำให้คุณเรียกใช้ไม่ใช่สิ่งที่คุณควรเรียกใช้ เวลานี้คำสั่งที่แนะนำไม่เลว:

$ 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"

เคล็ดลับ: จนกว่าฉันจะคุ้นเคยกับคอมไพล์มากแล้วก็ทำการแบ็คอัพไฟล์โปรเจคของฉัน - ก่อนที่จะรันคำสั่ง git ที่แนะนำและสำรวจสิ่งที่ฉันคิดว่าจะใช้งานได้ - ช่วยเบคอนของฉันมากกว่าสองสามครั้ง


2

ไม่สามารถตรวจหาที่อยู่อีเมลได้โดยอัตโนมัติ

abc@xyz.noneโดยค่าเริ่มต้นมันต้องใช้ชื่อผู้ใช้ระบบของคุณเช่น

ดังนั้นคุณต้องตั้งค่าอีเมลของคุณด้านล่าง:

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

หลังจากตั้งค่าอีเมลคุณสามารถเรียกใช้คำสั่ง git และยอมรับการเปลี่ยนแปลงของคุณ

  1. git init
  2. git เพิ่ม *
  3. คอมไพล์ยอมรับ -m "บาง msg init"

1

ฉันพบข้อความแสดงข้อผิดพลาดขณะพยายามส่งไฟล์บางไฟล์

แค่วิ่งgit fetchแล้วก็ลองทำคอมมิทใหม่อีกครั้ง


0

ในการแก้ไขฉันใช้: git config --global user.email "you@example.com" และใช้งานได้

user.mail ไม่ทำงานต้องใส่ E Typo หรือเปล่า


ฉันคิดว่า OP ต้องการทราบว่านี่เป็นสิ่งจำเป็นจริงๆสำหรับการอัปเดตแต่ละครั้งหรือไม่
tbrk

-5

นั่นคือการพิมพ์ผิด คุณได้ตั้งบังเอิญ "user.mail" ไม่มี " อี " แก้ไขโดยการตั้งค่า "user. e mail" ในการกำหนดค่าทั่วโลกด้วย

git config - ผู้ใช้ทั่วโลกอีเมล "you@example.com"

พบวิธีแก้ปัญหาที่นี่

https://stackoverflow.com/a/14662703


3
คุณเห็น "'user.mail' ที่ไม่มี 'e'" ในหน้านี้ที่ไหน
Chad Nouis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.