Repo เสริมการทำงานของ Git โดยทำให้การทำงานในที่เก็บต่างๆ ง่ายขึ้น สำหรับ คำอธิบายของความสัมพันธ์ระหว่างที่เก็บและ Git โปรดดู เครื่องมือควบคุมแหล่งที่มา สำหรับข้อมูลเพิ่มเติม รายละเอียดเกี่ยวกับ Repo โปรดดู Repo ที่เก็บ README
การใช้ที่เก็บจะมีรูปแบบต่อไปนี้
repo command options
องค์ประกอบที่ระบุหรือไม่ก็ได้จะแสดงในวงเล็บเหลี่ยม [] เช่น คำสั่งหลายรายการจะใช้ project-list เป็นอาร์กิวเมนต์ คุณระบุ project-list ได้ เป็นรายการชื่อหรือรายการเส้นทางไปยังไดเรกทอรีแหล่งที่มาในเครื่องสำหรับ โปรเจ็กต์:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
ความช่วยเหลือ
repo help
ให้ความช่วยเหลือเกี่ยวกับคำสั่ง repo
คุณสามารถดูข้อมูลโดยละเอียดเกี่ยวกับ
คำสั่ง Repo ที่ระบุคำสั่งเป็นตัวเลือก ดังนี้
repo help command
เช่น คำสั่งต่อไปนี้แสดงคำอธิบายและรายการตัวเลือก
สำหรับคำสั่ง init
:
repo help init
หรือหากต้องการดูเฉพาะรายการตัวเลือกที่พร้อมใช้งานสำหรับคำสั่ง ให้เรียกใช้คำสั่งต่อไปนี้
repo command --help
ดังตัวอย่างต่อไปนี้
repo init --help
Init
repo init -u url [options]
ติดตั้งที่เก็บในไดเรกทอรีปัจจุบัน คำสั่งนี้จะสร้าง .repo/
ที่มีที่เก็บ Git สำหรับซอร์สโค้ดของที่เก็บและ
ไฟล์ Manifest ของ Android แบบมาตรฐาน
ตัวเลือก:
-u
: ระบุ URL ที่จะใช้เรียกข้อมูลที่เก็บไฟล์ Manifest ทั่วไป พบไฟล์ Manifest ที่https://android.googlesource.com/platform/manifest
-m
: เลือกไฟล์ Manifest ภายในที่เก็บ หากไม่มีชื่อไฟล์ Manifest เลือกไว้ ค่าเริ่มต้นคือdefault.xml
-b
: ระบุการแก้ไข ซึ่งก็คือ manifest-branch เฉพาะ
ซิงค์
repo sync [project-list]
ดาวน์โหลดการเปลี่ยนแปลงใหม่และอัปเดตไฟล์ที่ใช้งานได้ในสภาพแวดล้อมในเครื่องของคุณ
สำเร็จ git fetch
ในที่เก็บ Git ทั้งหมด หากวิ่ง
repo sync
โดยไม่มีอาร์กิวเมนต์ ระบบจะซิงค์ไฟล์สำหรับทุกโปรเจ็กต์
เมื่อคุณเรียกใช้ repo sync
นี่คือสิ่งที่เกิดขึ้น
หากโปรเจ็กต์ไม่เคยซิงค์มาก่อน
repo sync
จะมีค่าเทียบเท่ากับgit clone
; ระบบจะคัดลอกสาขาทั้งหมดในที่เก็บระยะไกลไปยังเครื่อง ไดเรกทอรีโปรเจ็กต์หากโปรเจ็กต์เคยซิงค์มาก่อน
repo sync
จะเทียบเท่ากับ เป็น: วันที่git remote update git rebase origin/branch
โดยที่ branch คือสาขาที่เช็คเอาต์ในปัจจุบันในท้องถิ่น ไดเรกทอรีโปรเจ็กต์ หากสาขาในพื้นที่ไม่ได้ติดตามสาขาในรีโมต จะไม่ซิงค์ข้อมูลสำหรับโปรเจ็กต์
หลังจากเรียกใช้ repo sync
สำเร็จ โค้ดในโปรเจ็กต์ที่ระบุจะเป็น
อัปเดตและซิงค์กับโค้ดในที่เก็บระยะไกลแล้ว
ตัวเลือกสำคัญ
-c
: ดึงเฉพาะ Branch ของไฟล์ Manifest ปัจจุบันจากเซิร์ฟเวอร์-d
: เปลี่ยนโปรเจ็กต์ที่ระบุกลับไปเป็นการแก้ไขไฟล์ Manifest ตัวเลือกนี้คือ มีประโยชน์หากโปรเจ็กต์อยู่ในสาขาหัวข้อ แต่การแก้ไขไฟล์ Manifest ชั่วคราว-f
: ดำเนินการซิงค์โปรเจ็กต์อื่นๆ ต่อ แม้ว่าโปรเจ็กต์จะซิงค์ไม่สำเร็จthreadcount
: แยกการซิงค์ในชุดข้อความต่างๆ สำหรับ เสร็จเร็วขึ้น ระวังอย่าให้เครื่องทำงานหนักเกินไป แต่ปล่อยให้ CPU ทำงานหนักเกินไป สงวนไว้สำหรับงานอื่นๆ หากต้องการดูจำนวน CPU ที่ใช้ได้ ให้เรียกใช้ก่อนnproc --all
-q
: ทำงานอย่างเงียบๆ ด้วยการระงับข้อความสถานะ-s
: ซิงค์กับบิลด์ที่ใช้งานได้ดีตามที่ระบุโดยองค์ประกอบmanifest-server
ในไฟล์ Manifest ปัจจุบัน
หากต้องการดูตัวเลือกเพิ่มเติม ให้เรียกใช้ repo help sync
อัปโหลด
repo upload [project-list]
อัปโหลดการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์การตรวจสอบ Repo จะเปรียบเทียบสำหรับโปรเจ็กต์ที่ระบุ สาขาในเครื่องไปยังสาขาระยะไกลที่อัปเดตในระหว่างการซิงค์ที่เก็บครั้งล่าสุด ที่เก็บจะแจ้งให้เลือกสาขาอย่างน้อย 1 สาขาที่ยังไม่ได้ อัปโหลดเพื่อขอรับการตรวจสอบแล้ว
ระบบจะส่งคอมมิตทั้งหมดในสาขาที่เลือกไปยัง Gerrit ผ่าน การเชื่อมต่อ HTTPS คุณต้องกำหนดค่ารหัสผ่าน HTTPS เพื่อเปิดใช้การอัปโหลด การกันวงเงิน วิธีสร้างคู่ชื่อผู้ใช้/รหัสผ่านใหม่เพื่อใช้ผ่าน HTTPS โปรดไปที่ เครื่องมือสร้างรหัสผ่าน
เมื่อ Gerrit รับข้อมูลของออบเจ็กต์ผ่านเซิร์ฟเวอร์ จะหมุน
ทำการเปลี่ยนแปลงเพื่อให้ผู้ตรวจสอบแสดงความคิดเห็นเกี่ยวกับสัญญาผูกมัดดังกล่าวได้
หากต้องการรวมคอมมิตของจุดตรวจสอบหลายรายการเป็นคอมมิตเดียว ให้ใช้ git rebase -i
ก่อนที่จะเรียกใช้การอัปโหลด
หากคุณเรียกใช้ repo upload
โดยไม่มีอาร์กิวเมนต์ ระบบจะค้นหาโปรเจ็กต์ทั้งหมดสำหรับ
การเปลี่ยนแปลงที่จะอัปโหลด
หากต้องการแก้ไขการเปลี่ยนแปลงหลังจากอัปโหลดแล้ว ให้ใช้เครื่องมือ เช่น git rebase -i
หรือ
git commit --amend
เพื่ออัปเดตสัญญาผูกมัดในเครื่อง หลังจากการแก้ไข
เสร็จสมบูรณ์:
- ยืนยันว่าสาขาที่อัปเดตเป็นสาขาที่ชำระเงินแล้วในปัจจุบัน
- ใช้
repo upload --replace PROJECT
เพื่อเปิดเครื่องมือแก้ไขการเปลี่ยนแปลงที่ตรงกัน ป้อนรหัสการเปลี่ยนแปลง Gerrit ในวงเล็บสำหรับคอมมิตแต่ละรายการในชุด ดังนี้
# Replacing from branch foo [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific... [ 2829 ] ec18b4ba Update proto client to support patch set replacements # Insert change numbers in the brackets to add a new patch set. # To create a new change record, leave the brackets empty.
หลังจากการอัปโหลดเสร็จสมบูรณ์ การเปลี่ยนแปลงจะมีชุดแพตช์เพิ่มเติม
หากต้องการอัปโหลดเฉพาะสาขา Git ที่ตรวจสอบแล้วในปัจจุบัน ให้ใช้แฟล็ก
--current-branch
(หรือเรียกสั้นๆ ว่า --cbr
)
ความแตกต่าง
repo diff [project-list]
แสดงการเปลี่ยนแปลงที่โดดเด่นระหว่างคอมมิตและโครงสร้างการทำงานที่ใช้
git diff
ดาวน์โหลด
repo download target change
ดาวน์โหลดการเปลี่ยนแปลงที่ระบุจากระบบการตรวจสอบและทำให้พร้อมใช้งานใน ไดเรกทอรีที่ใช้งานอยู่ในเครื่องของโปรเจ็กต์
เช่น หากต้องการดาวน์โหลด
change 23823 เป็น
ไดเรกทอรี platform/build
:
repo download platform/build 23823
การเรียกใช้ repo sync
จะนำการคอมมิตที่ดึงข้อมูลด้วย repo download
ออก หรือคุณ
สามารถตรวจสอบสาขาระยะไกลโดยใช้ git checkout m/main
Forall
repo forall [project-list] -c command
เรียกใช้คำสั่ง Shell ที่ระบุในแต่ละโปรเจ็กต์ ตัวเลือกเพิ่มเติมต่อไปนี้
ตัวแปรสภาพแวดล้อมพร้อมใช้งานโดย repo forall
- ตั้งชื่อ
REPO_PROJECT
เป็นชื่อที่ไม่ซ้ำกันของโปรเจ็กต์แล้ว REPO_PATH
คือเส้นทางที่สัมพันธ์กับรูทของไคลเอ็นต์REPO_REMOTE
คือชื่อระบบระยะไกลจากไฟล์ ManifestREPO_LREV
คือชื่อการแก้ไขจากไฟล์ Manifest ซึ่งแปลเป็น สาขาการติดตามในท้องถิ่น ใช้ตัวแปรนี้หากคุณต้องการส่งไฟล์ Manifest เป็นคำสั่ง Git ที่ดำเนินการในเครื่องREPO_RREV
คือชื่อของการแก้ไขจากไฟล์ Manifest ตามที่เขียนไว้ทุกประการ ในไฟล์ Manifest
ตัวเลือก:
-c
: คำสั่งและอาร์กิวเมนต์ที่จะดำเนินการ คำสั่งจะได้รับการประเมินผ่าน/bin/sh
และอาร์กิวเมนต์ใดๆ หลังจากมีการส่งผ่านเป็นตำแหน่งของเชลล์ พารามิเตอร์-p
: แสดงส่วนหัวของโปรเจ็กต์ก่อนเอาต์พุตของคำสั่งที่ระบุ นี่คือ ทำได้โดยการไปป์เชื่อมกับสตรีม stdin, Stdout และ Sterr ของคำสั่ง และ เชื่อมโยงเอาต์พุตทั้งหมดไปยังสตรีมต่อเนื่องที่แสดงในเพจเจอร์เดียว เซสชัน-v
: แสดงข้อความที่คำสั่งเขียนไปยัง stderr
ลูกพรุน
repo prune [project-list]
ตัด (ลบ) หัวข้อที่ผสานรวมแล้ว
เริ่มต้น
repo start branch-name [project-list]
เริ่มต้น Branch ใหม่สำหรับการพัฒนา เริ่มต้นจากการแก้ไขที่ระบุไว้ใน ไฟล์ Manifest
อาร์กิวเมนต์ BRANCH_NAME
จะให้คำอธิบายสั้นๆ เกี่ยวกับการเปลี่ยนแปลงที่คุณทำ
ในการทำโปรเจ็กต์ หากคุณไม่ทราบ ให้ลองใช้ชื่อ
default
อาร์กิวเมนต์ project-list
จะระบุโปรเจ็กต์ที่เข้าร่วมในหัวข้อนี้
Branch
status
repo status [project-list]
เปรียบเทียบโครงสร้างการทำงานกับพื้นที่ทดลองใช้ (ดัชนี) และคอมมิตล่าสุด ใน Branch นี้ (HEAD) ในแต่ละโปรเจ็กต์ที่ระบุ แสดงบรรทัดสรุปสำหรับ แต่ละไฟล์ที่มีค่าแตกต่างกันระหว่าง 3 สถานะนี้
หากต้องการดูสถานะของสาขาปัจจุบันเท่านั้น ให้เรียกใช้ repo status .
สถานะ
แสดงตามโปรเจ็กต์ สำหรับแต่ละไฟล์ในโครงการ ใช้ตัวอักษร 2 ตัว
ในคอลัมน์แรก อักษรตัวพิมพ์ใหญ่แสดงให้เห็นว่าพื้นที่ทดลองใช้แตกต่างกันอย่างไร จากสถานะที่คอมมิตล่าสุด
จดหมาย | ความหมาย | คำอธิบาย |
---|---|---|
- | ไม่มีการเปลี่ยนแปลง | เหมือนกันใน HEAD และดัชนี |
ก | เพิ่มแล้ว | ไม่อยู่ใน HEAD ในดัชนี |
จ | แก้ไขแล้ว | ใน HEAD แก้ไขในดัชนี |
D | ลบแล้ว | อยู่ใน HEAD ไม่อยู่ในดัชนี |
R | เปลี่ยนชื่อแล้ว | ไม่อยู่ใน HEAD เปลี่ยนเส้นทางในดัชนี |
C | คัดลอกแล้ว | ไม่อยู่ใน HEAD คัดลอกมาจากส่วนอื่นในดัชนี |
T | เปลี่ยนโหมดแล้ว | เนื้อหาเดียวกันใน HEAD และดัชนี มีการเปลี่ยนแปลงโหมด |
U | ยกเลิกการผสานแล้ว | ความขัดแย้งระหว่าง HEAD และดัชนี ต้องมีการแก้ปัญหา |
ในคอลัมน์ที่ 2 อักษรตัวพิมพ์เล็กแสดงว่าไดเรกทอรีการทำงานแตกต่างจากไดเรกทอรีที่ทำงานอย่างไร ดัชนี
จดหมาย | ความหมาย | คำอธิบาย |
---|---|---|
- | ใหม่/ไม่รู้จัก | ไม่อยู่ในดัชนี ในโครงสร้างงาน |
m | แก้ไขแล้ว | ในดัชนี ในแผนผังงาน มีการแก้ไข |
d | ลบแล้ว | ในดัชนี ไม่อยู่ในโครงสร้างงาน |
จัดการข้อผิดพลาดเกี่ยวกับที่เก็บ
git commit -a # Commit local changes first so they aren't lost. repo start branch-name # Start the branch git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start repo upload .
ข้อผิดพลาด repo: error: no branches ready for upload
จะปรากฏขึ้นเมื่อคำสั่ง
repo start
ไม่ทำงานตั้งแต่เริ่มต้นเซสชัน หากต้องการกู้คืน คุณสามารถตรวจสอบ
รหัสคอมมิต แล้วเริ่มต้นสาขาใหม่แล้วรวมรหัสดังกล่าว