ด้านล่างนี้เป็นสูตรโกง ฉันหวังว่ามันจะมีประโยชน์สำหรับผู้เริ่มต้นในการอ้างถึงพื้นฐานอย่างรวดเร็ว

ขั้นตอนที่ 0 — ข้อกำหนดเบื้องต้น — การตั้งค่าการเชื่อมต่อ ssh จากในพื้นที่ของเราไปยัง GitHub/GitLab

โปรดทำตามขั้นตอนที่ระบุไว้ที่ https://docs.github.com/en/authentication/connecting-to-github-with-ssh

ขั้นตอนที่ 1 — การตั้งค่าพื้นที่เก็บข้อมูล

  • โคลนพื้นที่เก็บข้อมูลในสภาพแวดล้อมท้องถิ่นของเราโดยใช้ git clone <url-from-repository>
  • คุณสามารถรับค่านี้ได้จากที่เก็บ Git ไปที่ repo → รหัส (ปุ่มสีเขียว) → คัดลอก ssh URL
  • หลังจากการดำเนินการโคลนเสร็จสิ้น จะชี้ไปที่สาขาเริ่มต้น

ขั้นตอนที่ 2 — การตั้งค่าสาขา

  • หากต้องการสลับไปยังสาขาที่มีอยู่ในระยะไกล git checkout <branch-name> หากต้องการรับการเปลี่ยนแปลงล่าสุดทั้งหมดในสาขาในพื้นที่ของเรา git pull — rebase
  • หากต้องการสร้างสาขาใหม่ในพื้นที่และพุชไปที่ระยะไกล
    — หากคุณอยู่ในสาขาใดสาขาหนึ่งในขณะนี้และต้องการให้สิ่งนี้เป็นจุดเริ่มต้นของสาขาใหม่ของคุณ ให้ใช้ git checkout -b <branch-name>.
    — หากคุณ สาขาใหม่ควรอิงจากสาขาอื่น ใช้ git branch <new-branch> <base-branch>
  • จากขั้นตอนใดขั้นตอนหนึ่งข้างต้น สาขาในพื้นที่จะถูกสร้างขึ้นแต่จะไม่ปรากฏในระยะไกล หากต้องการส่งไปที่ระยะไกล เราสามารถใช้ git push -u origin <local-branch-name>
  • สามารถดูข้อมูลเพิ่มเติมได้ที่ https://www.git-tower.com/learn/git/faq/create-branch

ขั้นตอนที่ 3 — ทำการเปลี่ยนแปลง

  • หากต้องการตรวจสอบสถานะปัจจุบันของสาขา ให้ใช้ git status มันจะแสดงรายการ โดยจะมีไฟล์ใหม่ ไฟล์ที่แก้ไข และไฟล์ที่ถูกลบด้วย
  • เพิ่มการเปลี่ยนแปลงในพื้นที่การแสดงละคร git add <path-to-file>หรือ git add <path-to-directory>
  • ยอมรับการเปลี่ยนแปลงกับสาขาในพื้นที่ของคุณ git commit -m “<commit-message>” สิ่งนี้จะทำให้เกิดการเปลี่ยนแปลงทั้งหมดที่เพิ่มลงในพื้นที่การแสดงละคร (ในขั้นตอนข้างต้น)

ขั้นตอนที่ 4 — รับการเปลี่ยนแปลงล่าสุดจากระยะไกล

  • git pull --rebase — สิ่งนี้จะช่วยเราอัปเดตสาขาในพื้นที่ของเราด้วยการเปลี่ยนแปลงทั้งหมดจากระยะไกล ด้วยแฟล็ก --rebase คอมไพล์จะย้ายคอมมิตในเครื่องของเราไปไว้บนสุดของคอมมิตล่าสุดในรีโมต
  • บางคนใช้ simplegit pull และจะเป็นการเพิ่มการคอมมิตการผสานใหม่สำหรับทุกสิ่งที่มีอยู่ในระยะไกล แต่ไม่ใช่ในพื้นที่ของเรา ความมุ่งมั่นเพิ่มเติมนี้มักจะทำให้เกิดความสับสน โดยส่วนตัวแล้วฉันชอบใช้คำสั่ง git pull ร่วมกับแฟล็ก rebase สำหรับข้อมูลเพิ่มเติม โปรดดูที่ https://git-scm.com/docs/git-pull

ขั้นตอนที่ 5— ผลักดันการเปลี่ยนแปลงของเราไปยังระยะไกล

  • git push

ขั้นตอนที่ 6— ตรวจสอบประวัติการคอมมิต

  • git log— นี่จะแสดงการคอมมิตทั้งหมดในสาขาปัจจุบันโดยมีการเปลี่ยนแปลงล่าสุดอยู่ด้านบน การคอมมิตแต่ละครั้งจะมีแฮชคอมมิต
  • git show <commit-hash>— นี่จะแสดงการเปลี่ยนแปลงต่อไฟล์ของการคอมมิต สามารถรับแฮชคอมมิตได้จากรายการด้านบน

ขั้นตอนที่ 7— ลบสาขาในพื้นที่

git branch -d <branch-name>— การดำเนินการนี้จะลบสาขาในเครื่อง หากมีการเปลี่ยนแปลงที่ไม่ได้รวมเข้ากับรีโมต เราจำเป็นต้องทำการบังคับลบ git branch -D <branch-name>

กิจกรรมเพิ่มเติม

สร้างพื้นที่เก็บข้อมูลใหม่ในพื้นที่ของเราและพุชไปยังระยะไกล

mkdir <folder-name>
cd <folder-name> 
touch .gitignore
git init 
git add . 
git commit -m "Initializing the repository"
git remote add origin <username>@<git-server-url>:/path/to/project.git
git push --set-upstream origin master

คัดลอกการคอมมิตจากสาขา 1 ไปยังสาขา 2

  • สลับไปที่สาขา 1, git checkout <branch-1>.
  • รับแฮชคอมมิตจากสาขา 1, git log
  • สลับไปที่สาขา 2, git checkout <branch-2>.
  • ใช้การเปลี่ยนแปลง git cherry-pick <commit-hash>
  • สามารถดูความช่วยเหลือเพิ่มเติมได้ที่ https://www.atlassian.com/git/tutorials/cherry-pick

คืนค่าการคอมมิตหนึ่งรายการขึ้นไปไปยังสาขาท้องถิ่น

  • git reset --soft HEAD~5— สิ่งนี้จะลบการคอมมิต 5 อันดับแรก แต่การเปลี่ยนแปลงที่ทำในนั้นจะแสดงเป็นการเปลี่ยนแปลงที่ไม่ได้จัดฉาก สิ่งนี้มีประโยชน์เมื่อเราต้องการเปลี่ยนแปลงโค้ดที่คอมมิตไว้ก่อนหน้านี้
  • git reset --hard HEAD~5— สิ่งนี้จะลบการเปลี่ยนแปลงในคอมมิต 5 อันดับแรกออกทั้งหมด รหัสจะไม่ถูกเก็บรักษาไว้ที่ใดในท้องถิ่น ดังนั้นสิ่งนี้จึงต้องพิจารณาอย่างรอบคอบ

Stitch กระทำในสาขาท้องถิ่น

  • เราอาจได้ทำข้อตกลงเล็กๆ น้อยๆ มากมาย ตอนนี้ หากเราต้องการจัดระเบียบและจัดกลุ่มให้เป็นชุดที่เกี่ยวข้องกัน เราสามารถใช้ git rebase ได้
  • git rebase -i HEAD~5— นี่จะเป็นการเปิดเชลล์เชิงโต้ตอบที่แสดงการคอมมิตล่าสุด 5 รายการ หากเราต้องการรวม Commit ใด ๆ เข้ากับ Commit อื่น เราสามารถใช้ตัวเลือก "squash" ได้
  • นี่เป็นขั้นสูงเล็กน้อย ดังนั้นโปรดดำเนินการนี้หลังจากพิจารณาอย่างถี่ถ้วนแล้ว นอกจากนี้ ไม่ควรทำเช่นนี้กับสาขาที่มีผู้ใช้หลายคน เมื่อการเปลี่ยนแปลงเหล่านี้ถูกผลักไปยังระยะไกล จะทำให้เกิดปัญหากับพื้นที่เก็บข้อมูลในเครื่องของบุคคลอื่น ในขณะที่เรากำลังเขียนประวัติ git ใหม่ที่นี่
  • ข้อมูลเพิ่มเติมที่ https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase