แผ่นโกงคำสั่ง Git 32 สำหรับผู้เริ่มต้น
เผยแพร่แล้ว: 2022-09-23แผ่นข้อมูลคำสั่ง GIT เป็นข้อมูลอ้างอิงที่สะดวกสำหรับนักพัฒนา และมีคำสั่งที่ใช้บ่อยที่สุดสำหรับโครงการ git
GIT คืออะไร?
GIT เป็นพื้นที่เก็บข้อมูลโอเพนซอร์สที่ผู้ใช้สามารถวางไฟล์ของตนได้ รวมถึงโค้ด รหัสไปรษณีย์ ข้อความ หรือทั้งโครงการ
มีคุณสมบัติหลายอย่าง เช่น การทำงานร่วมกัน การควบคุมเวอร์ชัน การควบคุมกระบวนการ ฯลฯ GIT จัดเก็บไฟล์ได้อย่างมีประสิทธิภาพและมีความสมบูรณ์ที่ดีกว่าระบบควบคุมเวอร์ชันอื่นๆ Git เป็นเครื่องมือบรรทัดคำสั่ง
GitHub คืออะไร?
ด้วยอินเทอร์เฟซผู้ใช้ที่เรียบง่าย GitHub ศูนย์กลางสำหรับนักพัฒนาจึงกลายเป็นระบบควบคุมเวอร์ชันที่ใช้กันอย่างแพร่หลายมากที่สุดและทุกคนสามารถเข้าถึงได้จากทุกที่
เวิร์กโฟลว์ Git
Git มีเวิร์กโฟลว์ที่แตกต่างกัน และทุกโปรเจ็กต์ควรมีหนึ่งเวิร์กโฟลว์ตามความต้องการ เวิร์กโฟลว์ Git เป็นเพียงเวิร์กโฟลว์ที่มีน้ำหนักเบาและอิงตามสาขา ซึ่งช่วยให้ทีมที่ปรับใช้โปรเจ็กต์เป็นประจำ
ตัวอย่างเช่น เวิร์กโฟลว์ Forking Git จะสร้างสำเนาในเครื่องของที่เก็บ ดังนั้น นักพัฒนาแต่ละรายจึงมีพื้นที่ทำงานในพื้นที่และพื้นที่เก็บข้อมูลส่วนกลาง เวิร์กโฟลว์ประเภทนี้จะดีเมื่อมีนักพัฒนาหลายคนเข้ามาเกี่ยวข้อง และอนุญาตให้นักพัฒนาทำงานร่วมกันบนสำเนาที่แยกจากกันก่อนที่จะทำการเปลี่ยนแปลงในที่เก็บหลัก
ทำไมเราถึงต้องการ Git?
เนื่องจาก Git เป็นระบบควบคุมเวอร์ชัน นักพัฒนาจึงทำงานอย่างต่อเนื่องเพื่อบันทึกการเปลี่ยนแปลง ทำให้ผู้อื่นดูได้ ผสานการเปลี่ยนแปลงกับผู้อื่น และอื่นๆ อีกมากมาย
สำหรับการเปลี่ยนแปลงใดๆ กับที่เก็บ Git นักพัฒนาจำเป็นต้องทราบคำสั่งที่เหมาะสมสำหรับการดำเนินการที่ถูกต้อง ด้านล่างนี้คือรายการคำสั่ง Git ที่สำคัญและใช้กันทั่วไป:
คำสั่ง Git ทั่วไป
git add
ในการเพิ่มไฟล์ที่ระบุในการจัดเตรียม
git add <file> -- add a specific file git add * -- add all the files
git archive
สร้างไฟล์เก็บถาวรของคอมมิต สาขา และทรี และรวมหลายไฟล์เข้าเป็นไฟล์เดียว คุณสามารถดึงเนื้อหาโดยการแตกไฟล์เมื่อจำเป็น
git archive HEAD
— สร้างไฟล์เก็บถาวรจาก HEAD ref ของ repo
git archive output = '.tar'
— เก็บไฟล์ที่เก็บถาวรไว้ในตำแหน่งที่กำหนด
git archive --format=tar.gz
— ระบุรูปแบบของไฟล์ที่เก็บถาวร เช่น tar, zip, tar.gz
สาขา git
แสดงรายการสาขาทั้งหมดในที่เก็บ สาขาใหม่ที่มีชื่อจะถูกสร้างขึ้นหากมีการระบุสาขา หากต้องการลบสาขา ให้ใช้ตัวเลือก -d พร้อมชื่อสาขา หากต้องการเปลี่ยนชื่อสาขาปัจจุบัน ให้ใช้ -m
git branch
— แสดงรายการสาขาทั้งหมด
git branch <branch_name
> — สร้างสาขาใหม่ที่ชื่อ 'branch_name' แต่ไม่ได้ตรวจสอบสาขาใหม่
git branch -d <branch_name>
— ลบแบรนช์ ป้องกันการลบหากมีการเปลี่ยนแปลงที่ยังไม่ได้รวม
git branch -D <branch_name>
— บังคับให้ลบสาขา แม้ว่าจะมีการเปลี่ยนแปลงที่ไม่ได้ผสานรวมอยู่ก็ตาม
git branch -m <branch2>
— เปลี่ยนชื่อสาขาปัจจุบัน
git cat-file
แสดงข้อมูลเนื้อหาหรือขนาด/ประเภทของวัตถุที่เก็บข้อมูล
git cat-file <object>
— แสดงเนื้อหาอ็อบเจกต์
git cat-file -t <object>
— แสดงประเภทของ object
git cat-file -s <object>
— แสดงขนาดของอ็อบเจกต์
git cat-file -p <object>
— พิมพ์ประเภทของอ็อบเจ็กต์ในลักษณะที่สวยงาม
git cat-file -e <object>
— แสดงข้อผิดพลาดใน stderr หากวัตถุมีรูปแบบที่ไม่ถูกต้องหรือไม่มีอยู่จริง
git cat-file <type> <object>
— แสดงเนื้อหาดิบของ object
git checkout
หากต้องการสลับระหว่างสาขาต่างๆ ของที่เก็บ ให้ใช้อย่างระมัดระวัง เนื่องจากไม่มีการ 'เลิกทำ'
git checkout <branch_name>
— ตรวจสอบ branch . ที่ระบุ
git checkout -b <branch_name>
— สร้างสาขาใหม่และเปลี่ยนเป็นสาขานี้
ตัวอย่างเช่น:
C:\Users\geekflare>git checkout -b development_branch Switched to a new branch 'development_branch'
git clean
ทำความสะอาดผู้อำนวยการทำงาน ไฟล์ที่คอมมิตจะไม่ถูกลบ
git clean -n
— แสดงรายการไฟล์ที่จะลบออก
git clean -f
— ลบไฟล์
git โคลน
สร้างสำเนาของ repo ที่มีอยู่ลงในไดเร็กทอรีใหม่ มีประโยชน์ในการรับสำเนาการพัฒนาของ repo ส่วนกลาง
git clone <central_repo> <new_dir>
— สร้างสำเนาของ repo ส่วนกลางลงในไดเร็กทอรีใหม่
ตัวอย่างเช่น:
C:\Users\geek>git clone geekflare master Cloning into 'master'… done.
git clone -branch <branch> <repo>
— โคลนสาขาจากที่เก็บที่กล่าวถึง
git คอมมิท
บันทึกการเปลี่ยนแปลงในสภาพแวดล้อมการจัดเตรียมเพื่อให้ผู้อื่นสามารถเห็นได้
git commit
— คอมมิตการเปลี่ยนแปลงการจัดเตรียม
git commit -m <useful_msg>
— ให้ข้อความเมื่อคอมมิตเพื่อเน้นการเปลี่ยนแปลงที่ทำ
git commit -a
— คอมมิตการเปลี่ยนแปลงโดยตรง โดยไม่ต้อง staging
สมมติว่าคุณเพิ่มไฟล์ชื่อ samplefile.txt ลงในไดเร็กทอรีการทำงานของคุณและต้องการส่งไฟล์ เมื่อให้คำสั่งข้างต้น คุณจะได้ผลลัพธ์:
Please enter the commit message for your changes. Lines starting with '#' will be ignored, and an empty message aborts the commit. On branch master Initial commit Changes to be committed: new file: samplefile.txt
เมื่อคุณส่งข้อความ การเปลี่ยนแปลงจะมีผล:
C:\Users\geekflare>git commit -m 'samplemsg' [integration_branch (root-commit) ed52dd0] 'samplemsg' 1 files changed, 24 insertions(+) create mode 100644 samplefile.txt
git config
ระบุระดับคอนฟิกูเรชันเพื่อเขียนค่าคุณสมบัติเข้าไป ระดับ 'ท้องถิ่น' เป็นค่าเริ่มต้น (เมื่อไม่ได้ระบุอะไรไว้)
git config –local
— บันทึกการกำหนดค่าในไดเร็กทอรี .git ของ repo
git config –global
— บันทึกการกำหนดค่าในโฮมไดเร็กทอรีของผู้ใช้
git config –system
— มีการกำหนดค่าของผู้ใช้และที่เก็บทั้งหมดและอยู่ในไฟล์ git config ของรูท
git diff
เปรียบเทียบการเปลี่ยนแปลงใน git repo ซึ่งสามารถทำได้ก่อนการจัดเตรียม ที่การจัดเตรียม และหลังการจัดเตรียม (commit)
git diff
— ติดตามการเปลี่ยนแปลง repo ที่ยังไม่ได้จัดฉาก
git diff --staged
— ติดตามการเปลี่ยนแปลงของไฟล์ที่จัดฉาก (ซึ่งไม่ได้ถูกคอมมิต)
git diff HEAD
— ติดตามการเปลี่ยนแปลงของไฟล์หลังจาก commit
git diff <commit1_id> <commit2_id>
— ติดตามการเปลี่ยนแปลงระหว่างสองคอมมิต; คุณสามารถค้นหา commit_ids โดยใช้ ' git log -p --follow --filename
'
git fetch
ดึงสาขาหรือที่เก็บระยะไกลทั้งหมด
git fetch <remote-url>
— รับที่เก็บทั้งหมดจาก URL ที่เก็บระยะไกล
git fetch <branch_url> <branchname>
— ดึงข้อมูลสาขาเฉพาะ
git fetch -all
— ดึงข้อมูลสาขาทั้งหมดของ repo ระยะไกล
git fetch origin
— อัปเดตและซิงค์ repo ในพื้นที่ด้วยการเปลี่ยนแปลงใหม่ใน repo ระยะไกล
git fsck
คำสั่ง File S ystem C hec K ตรวจสอบความถูกต้องและการเชื่อมต่อของอ็อบเจ็กต์ฐานข้อมูล จะตรวจสอบ SHA-1ID ของอ็อบเจ็กต์และการเชื่อมต่อที่สร้าง Fsck มีประโยชน์สำหรับการกู้คืนคอมมิตและไฟล์ที่สูญหาย
git fsck –full
git gc
รันการรวบรวมขยะบนที่เก็บปัจจุบันและล้างไฟล์ที่ไม่ได้ใช้
git gc
git grep
ค้นหาเนื้อหาเฉพาะในที่เก็บ Git มีตัวเลือกมากมายในการค้นหาด้วยวิธีต่างๆ
git grep -i 'search_term'
— ค้นหาโดยละเว้นกรณี [Man and man will be the same]
git grep -f <file_name>
— แสดงรูปแบบการจับคู่ของไฟล์เฉพาะ
git grep -e 'search-term'
— ใช้ -e สำหรับการจับคู่รูปแบบ
git grep -E 'regexp|multiple_exp'
– ค้นหานิพจน์ทั่วไป เราสามารถค้นหาได้หลายรายการโดยใช้ตัวดำเนินการไพพ์ (OR)
git grep -n 'expr'
— หมายเลขบรรทัดนำหน้าของบรรทัดที่ตรงกัน
git grep -c 'expr'
— แสดงจำนวนบรรทัดที่ตรงกันแทนแต่ละบรรทัด
git ls-tree
เพื่อแสดงรายการเนื้อหาของวัตถุต้นไม้จากไดเร็กทอรีปัจจุบัน
git ls -tree -d <path>
— แสดงเฉพาะรายการทรีที่ระบุ ไม่ใช่รายการย่อย
git ls -tree -r
— เรียกซ้ำใน sub-trees
git ls -tree -l
— แสดงขนาดของไฟล์ (blob) วัตถุ
git ls -tree --name-only
— แสดงเฉพาะชื่อไฟล์และไม่ใช่เอาต์พุตแบบยาว
git ls -tree --full-name
— แสดงชื่อพาธแบบเต็ม ไม่ใช่แค่พาธที่สัมพันธ์กับไดเร็กทอรีปัจจุบัน
ตัวอย่าง:
C:\Users\geek>git ls-tree --full-tree -r HEAD 100644 blob e883e60087e84f1660a9673ccb86eb0adc4f004d samplefile.txt 100644 blob 1426dc6fbff0677a484b248983a8740ff30fbb80 sample_jsindex.js
git init
สร้างพื้นที่เก็บข้อมูลเปล่าใหม่ เป็นคำสั่งแรกที่คุณดำเนินการเพื่อสร้างโปรเจ็กต์ git

git init
— สร้างที่เก็บ .git ในไดเร็กทอรีการทำงาน
ตัวอย่างเช่น ในการสร้าง repo ใหม่ที่เรียกว่า 'geekflare' ให้คำสั่งดังนี้:
$ git init geekflare Initialized empty Git repository in C:/Users/geek/geekflare/.git/
git instaweb
ส่วนต่อประสานผู้ใช้เพื่อเรียกดูที่เก็บ git ผ่านเบราว์เซอร์ ใช้สคริปต์ CGI GitWeb สำหรับสิ่งเดียวกัน
git instaweb --httpd=webrick
— เริ่มเซิร์ฟเวอร์ (httpd) และเปิดเว็บเบราว์เซอร์บนหน้า
หากต้องการหยุดเซิร์ฟเวอร์ ให้ใช้คำสั่งด้านบนพร้อมตัวเลือก –stop
git log
บันทึกทุกกิจกรรมในที่เก็บ git
git log
— แสดงคอมมิตล่าสุด
git log --oneline
— แสดงเอาต์พุตเป็นอักขระ 7 ตัวแรกของ SHA และข้อความยืนยันพร้อมคอมมิตหนึ่งรายการต่อบรรทัด
git log stat
— แสดงข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ที่แก้ไข เช่น จำนวนบรรทัดที่เพิ่ม/ลบ สรุปบันทึกทั้งหมดที่เปลี่ยนแปลง บรรทัดที่เพิ่ม/ลบ
git log --patch (or -p)
— แสดงไฟล์ที่แก้ไข การเปลี่ยนแปลงเฉพาะ และตำแหน่ง
git log --graph
— ดูผลบันทึกในรูปแบบกราฟ
git log -<n>
— แสดงจำนวนคอมมิต 'n' สุดท้าย
git log --after=<date/x days/yesterday>
— แสดงการคอมมิตทั้งหมดหลังจากวันที่ระบุ คุณสามารถใช้ --before
เพื่อแสดงการคอมมิตก่อนวันที่ระบุ
git log --author=<author_name>
- แสดงการคอมมิตของผู้เขียนเฉพาะ (ผู้ใช้)
git log --grep=<commit message>
— filter commits ตามข้อความยืนยัน
git merge
รวมไฟล์การพัฒนาทั้งหมดไว้ในสาขาเดียว รวมสองสาขา และรวมการคอมมิตหลายรายการไว้ในประวัติเดียว การผสานจะหยุดหากมีข้อขัดแย้ง และ git จะแสดงไฟล์ข้อขัดแย้ง เมื่อข้อขัดแย้งได้รับการแก้ไข การผสานจะดำเนินต่อไป
git checkout -b
— ขั้นแรก ชำระเงินสาขาเพื่อผสาน
git add <file>
git commit
— เพิ่มและส่งไฟล์
git checkout master
git merge
— ผสานสาขากับ master
git ลูกพรุน
ลบ (Prunes) ไฟล์ที่ไม่สามารถเข้าถึงได้จากสาขาปัจจุบัน เป็นกระบวนการทำความสะอาดเพื่อลบไฟล์ที่ไม่ได้ใช้ออกจากสาขา
git prune -n
— ไม่ต้องตัดแต่ง เพียงแสดงสิ่งที่สามารถตัดแต่งได้ทั้งหมด
git prune -v
— แสดงผลลัพธ์ของการกระทำที่ทำโดย prune
git prune --progress
— แสดงความคืบหน้าของการพรุน
git fetch --prune
— ตัดกิ่งที่ล้าสมัยทั้งหมด
git pull
รับข้อมูลจากเซิร์ฟเวอร์ระยะไกลไปยังที่เก็บที่ทำงาน มันอัปเดตสาขาในพื้นที่ (ทำงาน) ด้วยไฟล์ล่าสุดทั้งหมดจาก repo ระยะไกล
git pull
— ดึง repo ระยะไกล
git pull <repo URL>
— ดึงสาขาระยะไกลโดยเฉพาะ
git push
พุชการเปลี่ยนแปลงโลคัลทั้งหมดลงในที่เก็บระยะไกล เป็นกระบวนการอัปโหลดตรงข้ามกับคำสั่งดึงและดึงข้อมูล
git checkout master
— ชำระเงินสาขาที่มีการเปลี่ยนแปลงล่าสุด
git push origin master
— ผลักดันการเปลี่ยนแปลงไปยัง repo . ระยะไกล
ตัวอย่าง:
C:\Users\geek>git checkout development_branch Switched to branch 'development_branch' C:\Users\geek>git push master development_branch Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 612 bytes | 204.00 KiB/s, done. Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 To master [development_branch] development_branch -> development_branch
นอกจากนี้เรายังสามารถใช้ push เพื่อลบสาขาระยะไกลโดยใช้คำสั่ง git push --delete <branch>
ตัวอย่างเช่น:
C:\Users\geek>git push master --delete development_branch To master [deleted] development_branch
git rebase
รวมการคอมมิตหลายรายการจากสาขาต่างๆ เพื่อสร้างการคอมมิตฐานสุดท้ายใหม่ มีประโยชน์ก่อนที่จะรวมการเปลี่ยนแปลงทั้งหมด เพื่อคอมมิตการเปลี่ยนแปลงจากสาขาต่างๆ ทีละรายการ (เชิงเส้น)
git rebase <branch name>
— รวมคอมมิตเป็นหนึ่งฐานสุดท้าย
หากมีข้อขัดแย้ง ให้แก้ไขและทำการรีเบสต่อ:
git rebase --continue
หากต้องการข้ามการเปลี่ยนแปลงใดๆ ให้ทำดังนี้
git rebase --skip
git รีโมท
ตรวจสอบคอนฟิกูเรชันของรีโมตเซิร์ฟเวอร์และอนุญาตการเชื่อมต่อระหว่างรีโมตและโลคัล
git remote
— โดยค่าเริ่มต้น มันจะส่งคืน 'origin' ซึ่งเป็นชื่อเริ่มต้นของเซิร์ฟเวอร์ระยะไกลที่กำหนดโดย Git
git remote -v
— แสดงรายการชื่อย่อและ URL ของการเชื่อมต่อระยะไกลที่มีอยู่ทั้งหมด
git remote add <short name> <remote url>
— เพิ่มเซิร์ฟเวอร์ระยะไกลให้กับการเชื่อมต่อที่มีอยู่อย่างชัดเจน ชื่อย่อสามารถใช้สำหรับคำสั่ง git แทนที่จะให้ URL ทั้งหมด
git remote remove <remote url/short name>
— ลบเซิร์ฟเวอร์ระยะไกลออกจาก repository
git reset
กลับไปที่การคอมมิตก่อนหน้า และละทิ้งการเปลี่ยนแปลงที่เกิดขึ้นหลังจากคอมมิตนั้น
git reset <hash of the commit>
— คืนค่า repo เป็นคอมมิตที่ระบุ Git จะเก็บประวัติการคอมมิตไว้ ดังนั้นคุณสามารถทำการรีเซ็ตอีกครั้งด้วยคอมมิต (แฮช) อื่นเพื่อเลิกทำการรีเซ็ต
git rm
ลบไฟล์เฉพาะออกจาก git คุณสามารถยกเลิกเอฟเฟกต์ของ rm ได้โดยใช้คำสั่งรีเซ็ตหรือเช็คเอาต์
git rm <file_ name>
— ลบเฉพาะไฟล์
หากต้องการลบไฟล์ออกจาก git แต่เก็บไว้ในเครื่อง (staging) ให้ใช้:
git rm --cached
git show
ดูออบเจกต์ใดๆ เช่น blob, tree, commit หรือ tag โดยการระบุ SHA1
git show
— ไม่ระบุ <object> แสดงรายละเอียดของการ commit ล่าสุดในสาขา
git show <SHA1_id>
— แสดงเนื้อหาของอ็อบเจ็กต์ที่ระบุโดย SHA1 id เช่น blob id, tree id เป็นต้น หากต้องการตรวจสอบประเภทของอ็อบเจ็กต์ ให้ใช้คำสั่ง git cat-file -t
git show –pretty
— แสดงผลลัพธ์ในรูปแบบที่สวยงาม
คุณสามารถระบุรูปแบบที่กำหนดเองได้:
git show --pretty = 'format:Name: <format>'
หรือคุณสามารถใช้รูปแบบย่อ เต็ม หนึ่งบรรทัด สื่อหรือรูปแบบเต็มก็ได้ เช่น:
git show --pretty= 'medium'
— จะแสดงชื่อผู้แต่ง วันที่ ชื่อเรื่อง และข้อความยืนยันแบบเต็ม
git show --abbrev-commit
— เพื่อย่อ SHA1
git stash
หากต้องการสลับสาขาโดยไม่ต้องคอมมิตสาขาปัจจุบัน ให้จัดเก็บข้อมูลที่ไม่คอมมิตไว้อย่างปลอดภัย
git stash
— บันทึกงานและสถานะดัชนี
git stash save <message>
— ส่งข้อความขณะบันทึก
git stash list
— ดูรายการของ stash content
git stash apply
- ยอมรับการเปลี่ยนแปลงที่ซ่อน หากต้องการใช้การเปลี่ยนแปลงของที่เก็บเฉพาะ ให้ใช้รหัสดัชนีการซ่อนพร้อมกับสมัคร
git stash show
— ดูเนื้อหาของไฟล์ที่ซ่อน
git stash drop
— ลบ stash ล่าสุดออกจากคิว
สถานะ git
ดูสถานะของที่เก็บและการจัดเตรียม เช่น สถานะก่อนขั้นตอนการส่ง คุณสามารถใช้คำสั่งนี้ต่อจากคำสั่ง git อื่นๆ เช่น เพิ่ม อัปเดต หรือลบไฟล์
git status
— แสดงการเปลี่ยนแปลงที่จะถูกคอมมิตหรือไม่ได้ติดตาม (ไม่มีการจัดฉาก) การเปลี่ยนแปลง
ตัวอย่างเช่น หากคุณเพิ่มไฟล์ในไดเร็กทอรีการทำงานของคุณที่ชื่อ samplefile.txt และตรวจสอบว่ามีการเพิ่มไฟล์หรือไม่ คุณสามารถให้คำสั่งข้างต้นได้ ก็จะได้ผลลัพธ์ดังนี้
On branch master No commits yet Changes to be committed: (use "git rm --cached …" to unstage) new file: samplefile.txt
git tag
การอ้างอิงที่เป็นมิตรใช้เพื่อระบุเหตุการณ์สำคัญหรือจุดอ้างอิงในรหัส
git tag <tag_name>
— สร้างแท็กด้วยชื่อที่กำหนด
git tag
— แสดงรายการ tag ที่มีอยู่ทั้งหมด
git tag show <tag_name>
— แสดงรายละเอียดของ tag ที่ระบุ
git tag -l “.*”
— แสดงแท็กที่ตรงกับรูปแบบหรืออักขระที่ระบุ
gitk
เปิดอินเทอร์เฟซผู้ใช้ git ที่แสดงเนื้อหา การคอมมิต ความแตกต่างแบบเต็ม และรายละเอียดอื่นๆ ในหน้าต่าง
gitk
— เปิด git repo ในหน้าต่างเพื่อแสดงภาพ
เวอร์ชัน git
ใช้คำสั่ง git version เพื่อตรวจสอบเวอร์ชันของ git ที่คุณใช้
C:\Users\geekflare>git version git version 2.38.0.windows.1
คำพูดสุดท้าย
โพสต์นี้แสดงรายการคำสั่ง git ที่ใช้บ่อยที่สุดพร้อมตัวเลือก
ถัดไป คุณสามารถตรวจสอบเครื่องสแกนข้อมูลรับรอง GitHub