การทำงานกับโค้ด 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 ไปยังสาขาที่ระบุ | 
  
git merge [branch] | 
    ผสาน [branch] เข้ากับสาขาปัจจุบัน | 
  
git diff | 
    แสดงความแตกต่างของการเปลี่ยนแปลงที่ไม่ได้จัดเตรียม | 
git diff --cached | 
    แสดงความแตกต่างของการเปลี่ยนแปลงที่จัดเตรียมไว้ | 
git log | 
    แสดงประวัติของสาขาปัจจุบัน | 
git log m/[codeline].. | 
    แสดงคอมมิตที่ไม่ได้พุช | 
ดูข้อมูลเกี่ยวกับการใช้ Repo เพื่อดาวน์โหลดแหล่งที่มาได้ที่การดาวน์โหลดแหล่งที่มาและข้อมูลอ้างอิงคำสั่ง Repo
การซิงค์ไคลเอ็นต์
วิธีซิงค์ไฟล์สำหรับโปรเจ็กต์ทั้งหมดที่มีอยู่
repo sync
วิธีซิงค์ไฟล์สำหรับโปรเจ็กต์ที่เลือก
repo sync PROJECT0 PROJECT1 ... PROJECTN
การสร้างสาขาหัวข้อ
เริ่มสาขาหัวข้อในสภาพแวดล้อมการทำงานในพื้นที่ทุกครั้งที่คุณเริ่มทำการเปลี่ยนแปลง เช่น เมื่อเริ่มทำงานกับข้อบกพร่องหรือฟีเจอร์ใหม่ สาขาหัวข้อไม่ใช่สำเนาของไฟล์ต้นฉบับ แต่เป็นเคอร์เซอร์ไปยังการคอมมิตหนึ่งๆ ซึ่งทำให้การสร้างสาขาในเครื่องและการสลับใช้สาขาต่างๆ เป็นการดำเนินการที่ไม่หนักมาก การใช้สาขาช่วยให้คุณแยกแง่มุมหนึ่งๆ ของงานออกจากแง่มุมอื่นๆ ได้ อ่านบทความที่น่าสนใจเกี่ยวกับการใช้สาขาหัวข้อได้ที่การแยกสาขาหัวข้อ
หากต้องการเริ่มสาขาหัวข้อโดยใช้ Repo ให้ไปที่โปรเจ็กต์แล้วเรียกใช้คำสั่งต่อไปนี้
repo start BRANCH_NAME .
  เครื่องหมายจุดตามหลัง ( .) แสดงถึงโปรเจ็กต์ในไดเรกทอรีที่ใช้งานอยู่ในปัจจุบัน
วิธียืนยันว่ามีการสร้างสาขาใหม่แล้ว
repo status .
การใช้สาขาหัวข้อ
วิธีมอบหมายสาขาให้กับโปรเจ็กต์ที่ต้องการ
repo start BRANCH_NAME PROJECT_NAME
ดูรายการโปรเจ็กต์ทั้งหมดได้ที่ android.googlesource.com หากไปยังไดเรกทอรีโปรเจ็กต์แล้ว ให้ใช้เครื่องหมายจุดเพื่อแสดงโปรเจ็กต์ปัจจุบัน
วิธีเปลี่ยนไปใช้สาขาอื่นในสภาพแวดล้อมการทำงานในเครื่อง
git checkout BRANCH_NAME
วิธีดูรายการสาขาที่มีอยู่
git branch
หรือ
repo branches
ทั้ง 2 คำสั่งจะแสดงรายการสาขาที่มีอยู่พร้อมชื่อสาขาปัจจุบันที่มีเครื่องหมายดอกจัน (*) อยู่ข้างหน้า
ไฟล์ที่เตรียมไว้
โดยค่าเริ่มต้น Git จะสังเกตเห็นแต่ไม่ติดตามการเปลี่ยนแปลงที่คุณทำในโปรเจ็กต์ หากต้องการบอกให้ Git เก็บการเปลี่ยนแปลงไว้ คุณต้องทําเครื่องหมายหรือจัดเตรียมการเปลี่ยนแปลงเหล่านั้นให้รวมอยู่ในการคอมมิต
วิธีจัดเตรียมการเปลี่ยนแปลง
git add
  คำสั่งนี้ยอมรับอาร์กิวเมนต์สำหรับไฟล์หรือไดเรกทอรีภายในไดเรกทอรีโปรเจ็กต์ แม้จะชื่อ git add แต่คำสั่งนี้ไม่ได้เพิ่มไฟล์ไปยังที่เก็บ Git เท่านั้น แต่ยังใช้เพื่อจัดลำดับขั้นการแก้ไขและการลบไฟล์ได้ด้วย
การดูสถานะลูกค้า
วิธีแสดงสถานะของไฟล์
repo status
วิธีดูการแก้ไขที่ไม่ได้บันทึก (การแก้ไขในเครื่องที่ไม่ได้ทำเครื่องหมายให้บันทึก)
repo diff
  หากต้องการดูการแก้ไขที่คอมมิตแล้ว (การแก้ไขที่ทำเครื่องหมายไว้สำหรับคอมมิต) ให้ตรวจสอบว่าคุณอยู่ในไดเรกทอรีโปรเจ็กต์ จากนั้นเรียกใช้ git
  diff ด้วยอาร์กิวเมนต์ cached ดังนี้
cd ~/WORKING_DIRECTORY/PROJECTgit diff --cached
การทำการเปลี่ยนแปลง
การคอมมิตคือหน่วยพื้นฐานของการควบคุมการแก้ไขใน Git และประกอบด้วยสแนปชอตของโครงสร้างไดเรกทอรีและเนื้อหาไฟล์ของทั้งโปรเจ็กต์ ใช้คำสั่งนี้เพื่อสร้างการคอมมิตใน Git
git commit
เมื่อได้รับข้อความแจ้งให้ระบุข้อความคอมมิต ให้ระบุข้อความสั้นๆ (แต่เป็นประโยชน์) สำหรับการเปลี่ยนแปลงที่ส่งไปยัง AOSP หากไม่เพิ่มข้อความคอมมิต การคอมมิตจะดำเนินการไม่สำเร็จ
การอัปโหลดการเปลี่ยนแปลงไปยัง Gerrit
อัปเดตเป็นฉบับแก้ไขล่าสุด แล้วอัปโหลดการเปลี่ยนแปลงโดยทำดังนี้
repo syncrepo upload
  คำสั่งเหล่านี้จะแสดงรายการการเปลี่ยนแปลงที่คุณคอมมิตไว้และแจ้งให้คุณเลือกสาขาที่จะอัปโหลดไปยังเซิร์ฟเวอร์ตรวจสอบ หากมีสาขาเดียว คุณจะเห็นข้อความแจ้ง y/n ง่ายๆ
การแก้ไขความขัดแย้งในการซิงค์
  หากคำสั่ง repo sync แสดงการซิงค์ขัดแย้ง ให้ทำดังนี้
- ดูไฟล์ที่ยกเลิกการผสาน (รหัสสถานะ = U)
 - แก้ไขภูมิภาคที่มีความขัดแย้งตามที่จำเป็น
 - เปลี่ยนไปยังไดเรกทอรีโปรเจ็กต์ที่เกี่ยวข้อง เพิ่มและคอมมิตไฟล์ที่ได้รับผลกระทบ แล้วเปลี่ยนฐานของการเปลี่ยนแปลงใหม่โดยทำดังนี้
git add .git commitgit rebase --continue - หลังจากการย้ายฐานเสร็จสมบูรณ์แล้ว ให้เริ่มการซิงค์ทั้งหมดอีกครั้งโดยทำดังนี้
repo sync PROJECT0 PROJECT1 ... PROJECTN
 
ล้างข้อมูลไคลเอ็นต์
  หลังจากผสานการเปลี่ยนแปลงใน Gerrit แล้ว ให้อัปเดตไดเรกทอรีทํางานในเครื่อง จากนั้นใช้ repo prune เพื่อนำสาขาหัวข้อที่ล้าสมัยออกอย่างปลอดภัย โดยทำดังนี้
repo syncrepo prune
การลบไคลเอ็นต์
เนื่องจากระบบจะจัดเก็บข้อมูลสถานะทั้งหมดไว้ในไคลเอ็นต์ คุณจึงต้องลบไดเรกทอรีออกจากระบบไฟล์เท่านั้น โดยทำดังนี้
rm -rf WORKING_DIRECTORY
การลบลูกค้าจะลบการเปลี่ยนแปลงทั้งหมดที่คุณยังไม่ได้อัปโหลดให้ตรวจสอบอย่างถาวร