อะไรจริงๆ ที่ควบคุมอีเมลบน commit
อีเมลผู้เขียนของ commit ถูกกำหนดโดยการตั้งค่า Git บนเครื่องที่สร้าง commit ไม่ใช่โดยอีเมลที่แสดงบนโปรไฟล์ GitHub ของคุณ อีเมลโปรไฟล์ GitHub เป็นการตั้งค่าแยกต่างหากที่ใช้สำหรับการแจ้งเตือน การกู้คืนบัญชี และการกระทำบางอย่างผ่านเว็บอินเทอร์เฟซ หากคุณ commit จาก terminal ที่อยู่ที่เขียนลงใน commit object มาจากค่า user.email ในเครื่องของคุณ ความแตกต่างนี้คือหัวใจทั้งหมด: การเปลี่ยนอีเมลโปรไฟล์ไม่มีผลกับ commit จาก command line ในอนาคต และการเปลี่ยน Git config ในเครื่องก็ไม่มีผลกับ commit ที่ push ไปแล้ว
การตั้งค่า Git ควบคุมอีเมลที่แนบไปกับ commit ในอนาคตที่สร้างจาก command line แหล่งที่มา
ก่อนจะเปลี่ยนอะไร เข้าใจก่อนว่าคุณกำลังตรวจสอบอะไร คุณไม่ได้พยายามลบอีเมลออกจาก GitHub คุณกำลังตัดสินใจว่าที่อยู่ใดควรปรากฏบน commit ที่คุณสร้างจากนี้ไป และมี repository ใดบ้างที่ยังพึ่งพาที่อยู่เก่าสำหรับการระบุตัวตนหรือเครื่องมือ
ขั้นตอนที่ 1: ตรวจสอบตัวตนที่ commit ของคุณถืออยู่ตอนนี้
เริ่มจากดูว่า commit ล่าสุดของคุณมีอะไรอยู่จริง ใน repository ที่คุณเป็นเจ้าของ ให้รัน log ที่แสดงฟิลด์อีเมลผู้เขียนและผู้ commit สำหรับ commit หลายรายการล่าสุด เป้าหมายคือดูสตริงที่อยู่ให้แน่ชัด ไม่ใช่ตัดสินว่าอ่อนไหวหรือยัง ทำเช่นนี้ในแต่ละ repository ที่คุณ push จาก command line เพราะการตั้งค่าในเครื่องอาจแตกต่างกันในแต่ละ repository
จากนั้นตรวจสอบการตั้งค่าที่มีผลซึ่ง Git จะใช้ใน repository นั้น Git แก้ไขการตั้งค่าจากหลาย scope และค่าที่ระดับ repository จะทับค่าที่ระดับ global หากคุณเห็นที่อยู่ที่ไม่รู้จัก อาจมาจากการตั้งค่าเฉพาะ repository ไฟล์ config ที่ถูก include หรือตัวแปรสภาพแวดล้อมใน shell ของคุณ บันทึกสิ่งที่พบก่อนแก้ไข การตรวจสอบที่ทำซ้ำไม่ได้ก็ไม่ใช่การตรวจสอบ
ขั้นตอนที่ 2: แยกการตั้งค่าสองอย่างในหัวของคุณ
ใช้ตารางการตัดสินใจนี้เพื่อแยกการตั้งค่าโปรไฟล์ออกจากการตั้งค่า commit ให้ชัดเจน ตารางนี้อธิบายกลไกทั่วไปที่คุณตรวจสอบได้ในบัญชีและ terminal ของตัวเอง ไม่ได้ยืนยันป้ายเมนูหรือเส้นทาง UI ปัจจุบันที่เฉพาะเจาะจง
| คำถาม | ควบคุมโดย | การเปลี่ยนมีผลกับอะไร | ไม่มีผลกับอะไร |
|---|---|---|---|
| อีเมลใดปรากฏบนโปรไฟล์ GitHub ของฉัน? | การตั้งค่าอีเมลบัญชี GitHub | การแสดงโปรไฟล์ การแจ้งเตือน การกู้คืนบัญชี | อีเมลผู้เขียนบน commit ที่คุณสร้างในเครื่อง |
| อีเมลใดถูกเขียนลงใน commit ใหม่? | การตั้งค่า user.email ใน Git ในเครื่อง | commit ในอนาคตที่สร้างจากเครื่องหรือ repository นั้น | commit ที่สร้างหรือ push ไปแล้ว |
| commit เก่าจะเปลี่ยนไหมถ้าฉันเปลี่ยนเป็น noreply? | ไม่มีอะไรอัตโนมัติ | ไม่มีอะไร | commit object ที่มีอยู่ยังคงอีเมลผู้เขียนเดิม |
| ฉันซ่อนอีเมลจาก commit สาธารณะในอนาคตได้ไหม? | การตั้งค่า Git ในเครื่องบวก noreply address | commit ใหม่ที่คุณสร้างหลังการเปลี่ยน | ประวัติที่ผ่านมา forks และสำเนาที่แคชไว้ที่อื่น |
ข้อสรุปเชิงปฏิบัติจากตาราง: คุณมีคันโยกสองอันที่เป็นอิสระต่อกัน ดึงคันโยก commit หากคุณกังวลเรื่องการ push ในอนาคต อย่าคาดหวังให้คันโยกโปรไฟล์ทำงานนั้น
ขั้นตอนที่ 3: เลือก noreply address และตั้งค่าในเครื่อง
GitHub มีตัวเลือก noreply address รูปแบบที่แน่นอนมีเอกสารโดย GitHub และอาจเปลี่ยนได้ตามเวลา ดังนั้นคัดลอกที่อยู่จากหน้าตั้งค่าบัญชีของคุณเอง ไม่ใช่จากบล็อกโพสต์ เมื่อได้มาแล้ว ให้ตั้งเป็นอีเมล commit ใน scope ที่ตรงกับ workflow ของคุณ
ลำดับที่ปลอดภัย:
- คัดลอก noreply address ที่ GitHub ให้มาจากหน้าตั้งค่าบัญชีของคุณ
- ตัดสินใจ scope: ตั้งเป็น global หากทุก repository บนเครื่องควรใช้ หรือตั้งเป็นราย repository หากคุณมีส่วนร่วมในโปรเจกต์ที่คาดหวังตัวตนอื่น
- ใช้การตั้งค่าด้วย
git configที่ scope ที่เลือก - สร้าง commit ทดสอบใน scratch branch และตรวจสอบอีเมลผู้เขียนก่อน push
- push หลังจาก commit ทดสอบแสดง noreply address แล้วเท่านั้น
GitHub มีตัวเลือก noreply address; การเปลี่ยนที่อยู่ที่ตั้งค่าไว้ไม่เขียน commit ที่มีอยู่ใหม่ แหล่งที่มา
ประเด็นที่สองคือสิ่งที่คนมักมองข้าม การเปลี่ยนเป็น noreply เป็นการควบคุมที่มองไปข้างหน้า ไม่เขียน commit ที่มีอยู่ใหม่ และไม่ลบที่อยู่เก่าของคุณออกจาก commit object ที่เป็นสาธารณะแล้ว หาก repository ถูก fork หรือ mirror สำเนาเหล่านั้นยังคงข้อมูล commit เดิมไม่ว่าคุณจะตั้งค่าอะไรในวันนี้
ขั้นตอนที่ 4: ตรวจสอบพฤติกรรมของเว็บอินเทอร์เฟซและเครื่องมือแยกต่างหาก
commit ที่สร้างผ่านเว็บอินเทอร์เฟซของ GitHub หรือโดยบอทและการเชื่อมต่อ อาจใช้เส้นทางตัวตนที่ต่างจาก terminal ในเครื่องของคุณ อย่าสันนิษฐานว่าการเปลี่ยน config ในเครื่องครอบคลุมทุก commit ที่เข้ามาใน repository ตรวจสอบฟิลด์ผู้เขียนบน commit จากแหล่งต่างๆ และบันทึกว่าอันไหนคุณควบคุมได้โดยตรง สำหรับการเชื่อมต่อที่คุณไม่ได้ควบคุม คำตอบที่ซื่อสัตย์คือคุณไม่สามารถตั้งค่าตัวตน commit ของพวกเขาจากแล็ปท็อปของคุณได้ คุณทำได้เพียงตัดสินใจว่าจะใช้การเชื่อมต่อนั้นต่อไปหรือไม่
ขั้นตอนที่ 5: ตัดสินใจว่าจะทำอย่างไรกับประวัติเก่า
คุณมีทางเลือกจริงสามทาง และไม่มีทางไหนคือ “ทำให้การเปิดเผยเก่าหายไป”
| ทางเลือก | สิ่งที่ทำ | ต้นทุนและข้อจำกัด |
|---|---|---|
| ปล่อยประวัติไว้ตามเดิม | ไม่มีความเสี่ยงที่จะทำให้ clone หรือ reference พัง | commit เก่ายังคงอีเมลผู้เขียนเดิม |
| เขียนประวัติใหม่ใน repository ของคุณเอง | เปลี่ยน commit object ต่อจากนี้ใน repo นั้น | การเขียนใหม่สร้างความวุ่นวาย ไม่ไปถึง forks หรือ mirrors และอยู่นอกขอบเขตของผู้ใช้ส่วนใหญ่ |
| ลบหรือหมุนเวียนที่อยู่ที่เปิดเผย | ลดการเปิดเผยในอนาคตหากที่อยู่ยังใช้งานอยู่ | ไม่เปลี่ยน commit ที่มีที่อยู่นั้นอยู่แล้ว |
สำหรับผู้อ่านส่วนใหญ่ การเคลื่อนที่ถูกคือทางแรกหรือทางที่สาม: หยุดเพิ่มที่อยู่ใน commit ใหม่ และถือว่า commit เก่าเป็นสาธารณะถาวร หากที่อยู่ที่เปิดเผยเป็นที่อยู่ที่คุณยังใช้สำหรับเข้าสู่ระบบหรือกู้คืน ลองพิจารณาว่าควรให้มันเชื่อมโยงกับบัญชีอยู่หรือไม่ นั่นเป็นการตัดสินใจด้านความปลอดภัยของบัญชี ไม่ใช่การตั้งค่า Git
ข้อผิดพลาดที่พบบ่อย
- เปลี่ยนอีเมลโปรไฟล์แล้วคิดว่า commit ได้รับการแก้ไขแล้ว การตั้งค่าโปรไฟล์และตัวตน commit เป็นคนละอย่าง commit จาก terminal ในอนาคตจะยังคงมีที่อยู่เก่าจนกว่าคุณจะเปลี่ยนการตั้งค่า Git ในเครื่อง
- ตั้ง noreply เป็น global โดยไม่ตรวจสอบการ override ของ repository
user.emailระดับ repository จะชนะค่าที่ global ของคุณ ตรวจสอบแต่ละ repository ที่คุณ push - push commit ทดสอบไปยัง branch สาธารณะ ตรวจสอบอีเมลผู้เขียนบน scratch branch หรือด้วย log ในเครื่องก่อน push
- เชื่อว่าการเปลี่ยนเป็น noreply จะล้างประวัติ มันไม่เขียน commit ที่มีอยู่ใหม่ และไม่สามารถไปถึง forks, mirrors หรือสำเนาที่แคชไว้
- สันนิษฐานว่าทุกแหล่งที่มาของ commit อยู่ในการควบคุมของคุณ commit จากเว็บอินเทอร์เฟซและจากการเชื่อมต่ออาจใช้ตัวตนต่างกัน ตรวจสอบแทนการสันนิษฐาน
- ถือว่าโปรไฟล์ที่แก้ไขคือการลบ การเปลี่ยนสิ่งที่โปรไฟล์แสดงไม่ลบข้อมูลที่จัดเก็บหรือเปลี่ยน commit object
ปกป้องร่องรอยของคุณเอง
อีเมล commit เป็นช่องทางแคบๆ ช่องเดียว ร่องรอยสาธารณะของคุณยังรวมถึง handle และโปรไฟล์ที่ผูกกับที่อยู่นั้นในแพลตฟอร์มอื่นด้วย หากคุณกำลังตรวจสอบที่อยู่เพราะมันปรากฏที่ใดที่หนึ่งต่อสาธารณะ ขั้นตอนถัดไปที่มีประโยชน์คือดูว่าบัญชีสาธารณะใดเชื่อมโยงกับมัน คู่มือของ TruthsSeek เกี่ยวกับวิธีค้นหาบัญชีที่เชื่อมโยงกับที่อยู่อีเมลจะพาคุณผ่านกระบวนการตรวจสอบนั้น และหน้า GitHub lookup ที่ /find/github/ เป็นจุดเริ่มต้นสำหรับตรวจสอบ handle ที่รู้จัก TraceSeek แอปที่ TruthsSeek ครอบคลุม ตรวจสอบ username กับ 3,000+ แพลตฟอร์มและเสนอการสแกนครั้งแรกฟรี โดยผลิตภัณฑ์ระบุว่าการสแกนใช้เวลา 20–30 วินาที เครื่องมือเหล่านี้แสดงผลการจับคู่สาธารณะเป็นเบาะแส ไม่ใช่หลักฐานความเป็นเจ้าของ และไม่เปลี่ยนการตั้งค่าแพลตฟอร์มหรือเปิดเผยบันทึกส่วนตัว ใช้มันเพื่อทำแผนที่สิ่งที่เป็นสาธารณะอยู่แล้ว จากนั้นจึงเปลี่ยนการตั้งค่าบนแพลตฟอร์มเอง
กิจวัตรที่สมจริง: แก้ตัวตน Git ในเครื่องครั้งเดียว ตรวจสอบด้วย commit ทดสอบ แล้วตรวจสอบฟิลด์ผู้เขียนบน commit จากเครื่องมือหรือเครื่องใหม่เป็นระยะ ถือทุก commit ที่ push แล้วเป็นข้อมูลสาธารณะถาวร เพราะในทางปฏิบัติมักเป็นเช่นนั้น
ข้อเท็จจริงสำคัญ
- การตั้งค่า Git ควบคุมอีเมลที่แนบไปกับ commit ในอนาคตที่สร้างจาก command line
- GitHub มีตัวเลือก noreply address; การเปลี่ยนที่อยู่ที่ตั้งค่าไว้ไม่เขียน commit ที่มีอยู่ใหม่
- การตั้งค่าอีเมลโปรไฟล์ GitHub และการตั้งค่าอีเมล commit ใน Git ในเครื่องเป็นตัวควบคุมแยกกันที่มีผลต่างกัน
- TraceSeek ตรวจสอบ username ข้าม 3,000+ แพลตฟอร์มและเสนอการสแกนครั้งแรกฟรี โดยผลิตภัณฑ์ระบุเวลาสแกน 20–30 วินาที
- ผลการจับคู่ username สาธารณะเป็นเบาะแส ไม่ใช่หลักฐานความเป็นเจ้าของบัญชี