การทำงานกับโค้ด Android ต้องใช้ Git (โอเพนซอร์ส ระบบควบคุมเวอร์ชัน) และ Repo (ที่เก็บที่ Google สร้างขึ้น เครื่องมือการจัดการที่ทำงานบน Git) โปรดดูเครื่องมือควบคุมแหล่งที่มา เพื่อดูคำอธิบายความสัมพันธ์ระหว่าง Repo, Git และลิงก์ไปยังเอกสารประกอบสำหรับแต่ละเครื่องมือ
น้ำไหล
การพัฒนา Android มีเวิร์กโฟลว์พื้นฐานต่อไปนี้
- เริ่มสาขาหัวข้อใหม่โดยใช้
repo start
- แก้ไขไฟล์
- การเปลี่ยนแปลงขั้นตอนโดยใช้
git add
- ยืนยันการเปลี่ยนแปลงโดยใช้
git commit
- อัปโหลดการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์การตรวจสอบโดยใช้
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
แสดงความขัดแย้งในการซิงค์ ให้ทำดังนี้
- ดูไฟล์ที่ไม่ได้ผสานรวม (รหัสสถานะ = U)
- แก้ไขภูมิภาคที่มีความขัดแย้งตามความจำเป็น
- เปลี่ยนเป็นไดเรกทอรีโปรเจ็กต์ที่เกี่ยวข้อง เพิ่มและคอมมิตที่ได้รับผลกระทบ
แล้วปรับฐานการเปลี่ยนแปลงดังนี้
git add .
git commit
git rebase --continue
- หลังจากฐานใหม่เสร็จสิ้นแล้ว ให้เริ่มการซิงค์ทั้งหมดอีกครั้ง
repo sync PROJECT0 PROJECT1 ... PROJECTN
การล้างข้อมูลไคลเอ็นต์
หลังจากผสานรวมการเปลี่ยนแปลงกับ Gerrit แล้ว ให้อัปเดตไดเรกทอรีที่ใช้งานอยู่ในเครื่อง จากนั้นใช้
repo prune
เพื่อนำสาขาของหัวข้อที่ไม่มีอัปเดตออกอย่างปลอดภัย:
repo sync
repo prune
กำลังลบไคลเอ็นต์
คุณเพียงแค่ต้องทำดังนี้เนื่องจากข้อมูลสถานะทั้งหมดจัดเก็บอยู่ในไคลเอ็นต์ ลบไดเรกทอรีออกจากระบบไฟล์โดยทำดังนี้
rm -rf WORKING_DIRECTORY
การลบไคลเอ็นต์จะลบอย่างถาวรกับการเปลี่ยนแปลงที่คุณไม่ได้ทำ อัปโหลดเพื่อขอรับการตรวจสอบแล้ว