เวิร์กโฟลว์การควบคุมแหล่งที่มา

การทำงานกับโค้ด Android ต้องใช้ Git (โอเพนซอร์ส ระบบควบคุมเวอร์ชัน) และ Repo (ที่เก็บที่ Google สร้างขึ้น เครื่องมือการจัดการที่ทำงานบน Git) โปรดดูเครื่องมือควบคุมแหล่งที่มา เพื่อดูคำอธิบายความสัมพันธ์ระหว่าง Repo, Git และลิงก์ไปยังเอกสารประกอบสำหรับแต่ละเครื่องมือ

น้ำไหล

การพัฒนา Android มีเวิร์กโฟลว์พื้นฐานต่อไปนี้

  1. เริ่มสาขาหัวข้อใหม่โดยใช้ repo start
  2. แก้ไขไฟล์
  3. การเปลี่ยนแปลงขั้นตอนโดยใช้ git add
  4. ยืนยันการเปลี่ยนแปลงโดยใช้ git commit
  5. อัปโหลดการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์การตรวจสอบโดยใช้ repo upload

Tasks

การทำงานกับ Git และ Repo ในที่เก็บโค้ด Android เกี่ยวข้องกับ ทำงานทั่วไปต่อไปนี้

คำสั่ง คำอธิบาย
repo init เริ่มต้นไคลเอ็นต์ใหม่
repo sync ซิงค์ไคลเอ็นต์กับที่เก็บ
repo start เริ่มสาขาใหม่
repo status แสดงสถานะของสาขาปัจจุบัน
repo upload อัปโหลดการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์การตรวจสอบ
git add จัดเตรียมไฟล์
git commit คอมมิตไฟล์ที่ทดลองใช้แล้ว
git branch แสดงสาขาปัจจุบัน
git branch [branch] สร้างสาขาหัวข้อใหม่
git checkout [branch] สลับ HEAD ไปยัง Branch ที่ระบุ
git merge [branch] รวม [branch] เป็นสาขาปัจจุบัน
git diff แสดงความแตกต่างของการเปลี่ยนแปลงที่ยังไม่มีขั้นตอน
git diff --cached แสดงความแตกต่างของการเปลี่ยนแปลงแบบทีละขั้น
git log แสดงประวัติของสาขาปัจจุบัน
git log m/[codeline].. แสดงการคอมมิตที่ไม่ได้พุช

สำหรับข้อมูลเกี่ยวกับการใช้ Repo เพื่อดาวน์โหลดแหล่งที่มา โปรดดูที่ การดาวน์โหลดซอร์สโค้ดและ ข้อมูลอ้างอิงเกี่ยวกับคำสั่ง Repo

การซิงค์ไคลเอ็นต์

วิธีซิงค์ไฟล์สำหรับโปรเจ็กต์ทั้งหมดมีดังนี้

repo sync

วิธีซิงค์ไฟล์สำหรับโปรเจ็กต์ที่เลือก

repo sync PROJECT0 PROJECT1 ... PROJECTN

กำลังสร้างสาขาหัวข้อ

เริ่มสาขาหัวข้อในสภาพแวดล้อมการทำงานในพื้นที่ทุกครั้งที่คุณเริ่ม เช่น เมื่อคุณเริ่มตรวจหาข้อบกพร่องหรือฟีเจอร์ใหม่ สาขาของหัวข้อ ไม่ใช่สำเนาของไฟล์ต้นฉบับ เป็นตัวชี้ไปยัง คอมมิตโดยเฉพาะ ซึ่งทำให้สร้าง Branch ในเครื่องและสลับไปมา เป็นการปฏิบัติการที่ไม่ซับซ้อน เมื่อใช้ Branch คุณจะแยกส่วน งานของคุณจากคนอื่นๆ สำหรับบทความที่น่าสนใจเกี่ยวกับการใช้หัวข้อ กิ่งก้าน, อ้างอิงถึง การแยก topic Branch

หากต้องการเริ่มต้นสาขาหัวข้อโดยใช้ Repo ให้ไปที่โปรเจ็กต์แล้วเรียกใช้:

repo start BRANCH_NAME .

ระยะเวลาต่อท้าย ( .) แสดงถึงโปรเจ็กต์ในการทำงานปัจจุบัน ไดเรกทอรี

วิธียืนยันว่าได้สร้าง Branch ใหม่แล้ว

repo status .

การใช้สาขาของหัวข้อ

หากต้องการกำหนดสาขาให้กับโปรเจ็กต์ที่เฉพาะเจาะจง ให้ทำดังนี้

repo start BRANCH_NAME PROJECT_NAME

ดูรายชื่อโปรเจ็กต์ทั้งหมดได้ที่ android.googlesource.com หากคุณไปยังไดเรกทอรีโปรเจ็กต์แล้ว ให้ใช้เครื่องหมายจุดเพื่อ แทนโปรเจ็กต์ปัจจุบัน

วิธีเปลี่ยนไปใช้ Branch อื่นในสภาพแวดล้อมการทำงานในเครื่อง

git checkout BRANCH_NAME

หากต้องการดูรายการของสาขาที่มีอยู่ ให้ทำดังนี้

git branch

หรือ

repo branches

ทั้ง 2 คำสั่งจะแสดงผลรายการของ Branch ที่มีอยู่ด้วยชื่อของ สาขาปัจจุบันที่นำหน้าด้วยเครื่องหมายดอกจัน (*)

ไฟล์ทดลองใช้

โดยค่าเริ่มต้น การแจ้งเตือน Git จะไม่ติดตามการเปลี่ยนแปลงที่คุณทำในโปรเจ็กต์ หากต้องการบอกให้ Git รักษาการเปลี่ยนแปลงของคุณไว้ คุณต้องทำเครื่องหมายหรือจัดระยะการเปลี่ยนแปลงเหล่านั้น การเปลี่ยนแปลงเพื่อรวมไว้ในคอมมิต

การเปลี่ยนแปลงที่ทำกับขั้นตอนมีดังนี้

git add

คำสั่งนี้ยอมรับอาร์กิวเมนต์สำหรับไฟล์หรือไดเรกทอรีภายในโปรเจ็กต์ ไดเรกทอรี แม้ว่าจะมีชื่อ แต่ git add จะไม่เพียงแค่เพิ่มไฟล์ลงใน ที่เก็บ Git ใช้เพื่อแก้ไขไฟล์และ ลบ

การดูสถานะไคลเอ็นต์

วิธีแสดงสถานะของไฟล์

repo status

วิธีดูการแก้ไขที่ยังไม่ได้บันทึก (การแก้ไขในเครื่องที่ไม่ได้ทำเครื่องหมายสำหรับคอมมิต)

repo diff

หากต้องการดูการแก้ไขที่คอมมิต (การแก้ไขที่ระบุตำแหน่งซึ่งถูกทำเครื่องหมาย คอมมิต) ตรวจสอบว่าคุณอยู่ในไดเรกทอรีโปรเจ็กต์ แล้วเรียกใช้ git diff ด้วยอาร์กิวเมนต์ cached ดังนี้

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

กำลังยืนยันการเปลี่ยนแปลง

คอมมิตคือหน่วยพื้นฐานของการควบคุมการแก้ไขใน Git และประกอบด้วย สแนปชอตของโครงสร้างไดเรกทอรีและเนื้อหาไฟล์สำหรับทั้งโครงการ ใช้คำสั่งนี้เพื่อสร้างคอมมิตใน Git

git commit

เมื่อได้รับแจ้งให้ส่งข้อความคอมมิต ให้ระบุข้อความสั้นๆ (แต่เป็นประโยชน์) สำหรับ การเปลี่ยนแปลงที่ส่งไปยัง AOSP หากไม่เพิ่มข้อความคอมมิต คอมมิตจะล้มเหลว

กำลังอัปโหลดการเปลี่ยนแปลงไปยัง Gerrit

อัปเดตเป็นเวอร์ชันล่าสุด จากนั้นอัปโหลดการเปลี่ยนแปลง

repo sync
repo upload

คำสั่งเหล่านี้จะแสดงรายการการเปลี่ยนแปลงที่คุณได้ตกลงไว้และแจ้งให้คุณดำเนินการ เลือกสาขาที่จะอัปโหลดไปยังเซิร์ฟเวอร์การตรวจสอบ หากมีเพียงรายการเดียว Branch คุณจะเห็นข้อความแจ้ง y/n แบบง่าย

การแก้ไขข้อขัดแย้งในการซิงค์

หากคำสั่ง repo sync แสดงความขัดแย้งในการซิงค์ ให้ทำดังนี้

  1. ดูไฟล์ที่ไม่ได้ผสานรวม (รหัสสถานะ = U)
  2. แก้ไขภูมิภาคที่มีความขัดแย้งตามความจำเป็น
  3. เปลี่ยนเป็นไดเรกทอรีโปรเจ็กต์ที่เกี่ยวข้อง เพิ่มและคอมมิตที่ได้รับผลกระทบ แล้วปรับฐานการเปลี่ยนแปลงดังนี้
    git add .
    git commit
    git rebase --continue
    
  4. หลังจากฐานใหม่เสร็จสิ้นแล้ว ให้เริ่มการซิงค์ทั้งหมดอีกครั้ง
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

การล้างข้อมูลไคลเอ็นต์

หลังจากผสานรวมการเปลี่ยนแปลงกับ Gerrit แล้ว ให้อัปเดตไดเรกทอรีที่ใช้งานอยู่ในเครื่อง จากนั้นใช้ repo prune เพื่อนำสาขาของหัวข้อที่ไม่มีอัปเดตออกอย่างปลอดภัย:

repo sync
repo prune

กำลังลบไคลเอ็นต์

คุณเพียงแค่ต้องทำดังนี้เนื่องจากข้อมูลสถานะทั้งหมดจัดเก็บอยู่ในไคลเอ็นต์ ลบไดเรกทอรีออกจากระบบไฟล์โดยทำดังนี้

rm -rf WORKING_DIRECTORY

การลบไคลเอ็นต์จะลบอย่างถาวรกับการเปลี่ยนแปลงที่คุณไม่ได้ทำ อัปโหลดเพื่อขอรับการตรวจสอบแล้ว