วิธีตั้งค่าชื่อผู้ใช้และรหัสผ่านสำหรับ repos git ที่แตกต่างกันอย่างไร


17
─[$] cat ~/.gitconfig

[user]
    name = Shirish Agarwal
    email = xxxx@xxxx.xxx
[core]
    editor = leafpad
    excludesfiles = /home/shirish/.gitignore
    gitproxy = \"ssh\" for gitorious.org
[merge]
    tool = meld
[push]
    default = simple
[color]
    ui = true
    status = auto
    branch = auto

ตอนนี้ฉันต้องการใส่ข้อมูลประจำตัวของ git สำหรับ github, gitlab และ gitorious ดังนั้นทุกครั้งที่ฉันไม่ต้องค้นหาข้อมูลประจำตัวบนเบราว์เซอร์ สิ่งนี้สามารถทำได้โดยอัตโนมัติ

ฉันกำลังวิ่งจู่โจม

คำตอบ:


21

ใช้ SSH

วิธีการทั่วไปในการจัดการการพิสูจน์ตัวตน git คือการมอบให้ SSH โดยทั่วไปคุณจะตั้งค่าคีย์สาธารณะ SSH ของคุณในที่เก็บระยะไกล ( เช่น บน GitHub ) จากนั้นคุณจะใช้สิ่งนั้นเมื่อใดก็ตามที่คุณต้องการตรวจสอบสิทธิ์ คุณสามารถใช้ตัวแทนที่สำคัญของหลักสูตรทั้งการจัดการโดยสภาพแวดล้อมเดสก์ทอปของคุณหรือด้วยตนเองและssh-agentssh-add

เพื่อหลีกเลี่ยงการระบุชื่อผู้ใช้คุณสามารถกำหนดค่าใน SSH ได้เช่นกันใน~/.ssh/config; เช่นฉันมี

Host git.opendaylight.org
  User skitt

และจากนั้นฉันสามารถโคลนโดยใช้

git clone ssh://git.opendaylight.org:29418/aaa

(สังเกตว่าไม่มีชื่อผู้ใช้ที่นั่น)

การใช้ gitcredentials

หากวิธีการ SSH ใช้ไม่ได้ ( เช่นคุณกำลังใช้พื้นที่เก็บข้อมูลที่เข้าถึงได้ผ่าน HTTPS) git จะมีวิธีจัดการข้อมูลประจำตัวของตัวเองโดยใช้gitcredentials(และโดยทั่วไปgit-credential-store) คุณระบุชื่อผู้ใช้ของคุณโดยใช้

git config credential.${remote}.username yourusername

และผู้ช่วยข้อมูลรับรองใช้

git config credential.helper store

(ระบุ--globalว่าคุณต้องการใช้การตั้งค่านี้ทุกที่หรือไม่)

จากนั้นเป็นครั้งแรกที่คุณเข้าถึงที่เก็บ git จะถามรหัสผ่านของคุณและจะถูกเก็บไว้ (โดยค่าเริ่มต้นใน~/.git-credentials) การเข้าถึงที่เก็บข้อมูลที่ตามมาจะใช้รหัสผ่านที่เก็บไว้แทนที่จะถามคุณ


1
คุณสามารถอธิบายรายละเอียดเกี่ยวกับ bit และcredential.${remote} credential.helperมีเอกสารที่คุณสามารถชี้ให้เห็นได้หรือไม่เพราะนี่เป็นครั้งแรกที่ฉันอ่านเกี่ยวกับเรื่องนี้
Shirish

ฉันเชื่อมโยงกับ manpages ในคำตอบของฉันนั่นคือเอกสารประกอบ ${remote}เป็นส่วนโปรโตคอลและชื่อโฮสต์ของ URI ที่คุณต้องการโคลนhelperชี้ไปที่โปรแกรมตัวช่วย
สตีเฟ่น Kitt

1
นอกจากนี้ยังมีบทหนึ่งของPro Gitในหัวข้อ
Stephen Kitt

7

สำหรับผู้ที่พบสิ่งนี้ในภายหลัง - ฉันมีปัญหากับเรื่องนี้และในที่สุดก็ทำให้มันใช้งานได้

https / หนังสือรับรองผู้ช่วย / Ubuntu

  1. เลิกตั้งทั่วโลก:
    git config --global --unset credentials.helper
  2. ยกเลิกการตั้งค่าในเครื่อง: (ในแต่ละ repo) git config --unset credential.helper
  3. สร้างไฟล์ข้อมูลรับรองสำหรับแต่ละ repo: (ภายในแต่ละ repo)

    git config credential.helper 'store --file ~/.git_reponame_credentials'
    

ไม่ได้บอกว่ามันเป็นวิธีที่ดีที่สุดหรือเป็นวิธีเดียว - แต่มันใช้ได้ผลกับฉันหลังจากผ่านไปหลายชั่วโมง


ดูเหมือนจะคล้ายกับสิ่งที่ลูกแมวแบ่งปัน
shirish

2
@shirish ไม่ได้จริงๆจุดที่สามคือสิ่งที่ฉันต้องการ - ตัวเลือกเพื่อระบุตำแหน่งของไฟล์
Mārtiņš Briedis

@shirish; ยิ่งไปกว่านั้นคำแนะนำของ Kitts ไม่ได้ระบุการตั้งค่าข้อมูลรับรองซึ่งเป็นองค์ประกอบที่สำคัญสำหรับฉันเนื่องจากฉันได้ตั้งไว้แล้วทั่วโลก
SteveJ

ฉันยังมีปัญหากับสิ่งนี้เพราะมันไม่เหมือนกับ repos คอมไพล์ทั้งหมด คุณจะได้รับมาจากแหล่ง / ร้านค้าเดียวกัน อันที่สองดีกว่า แต่น่าผิดหวังกว่าที่จะทำงานในความเป็นจริง ยังคงขอบคุณสำหรับการแบ่งปัน @SteveJ
Shirish
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.