แผ่นโกงคำสั่ง 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