ฉันพยายามเข้าถึงประวัติการส่งข้อมูลของสาขาในที่เก็บระยะไกล ฉันได้ดูเอกสารแต่ไม่สามารถหาข้อมูลที่สำคัญเกี่ยวกับวิธีการเข้าถึงประวัติการส่งมอบของ repo ระยะไกลโดยใช้ลูกค้า git ในพื้นที่ของฉัน
ฉันพยายามเข้าถึงประวัติการส่งข้อมูลของสาขาในที่เก็บระยะไกล ฉันได้ดูเอกสารแต่ไม่สามารถหาข้อมูลที่สำคัญเกี่ยวกับวิธีการเข้าถึงประวัติการส่งมอบของ repo ระยะไกลโดยใช้ลูกค้า git ในพื้นที่ของฉัน
คำตอบ:
git log remotename/branchname
จะแสดงบันทึกของสาขาระยะไกลที่กำหนดในที่เก็บ แต่เฉพาะบันทึกที่คุณได้ "ดึง" จากพื้นที่เก็บข้อมูลของพวกเขาไปยัง "คัดลอก" ส่วนตัวของคุณจากที่เก็บระยะไกล
โปรดจำไว้ว่าการโคลนที่เก็บของคุณจะอัปเดตสถานะของสาขาระยะไกลใด ๆ โดยการทำgit fetch
เท่านั้น คุณไม่สามารถเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์เพื่อตรวจสอบบันทึกที่นั่นสิ่งที่คุณทำคือดาวน์โหลดสถานะของเซิร์ฟเวอร์ด้วยgit fetch
แล้วดูบันทึกของสาขาระยะไกลในพื้นที่
บางทีคำสั่งที่มีประโยชน์อื่นอาจเป็น:
git log HEAD..remote/branch
ซึ่งจะแสดงให้เห็นถึงความมุ่งมั่นที่อยู่ในสาขาระยะไกล แต่ไม่ได้อยู่ในสาขาปัจจุบันของคุณ ( HEAD
)
git fetch
คุณจะต้องใช้--all
เพื่อดึงจากรีโมท
NB "จุดเริ่มต้น" ด้านล่างใช้เพื่อแสดงถึงต้นน้ำของที่เก็บโคลนแทนที่ "จุดเริ่มต้น" ด้วยชื่อที่สื่อความหมายสำหรับ repo ระยะไกล "การอ้างอิงระยะไกล" สามารถใช้รูปแบบเดียวกับที่ใช้ในคำสั่ง clone
git remote add origin <remote reference>
git fetch
git log origin/master
git://git.somedomain.tld/some/repo
<refspec>
เมื่อดึง (หรือใช้fetch --all
) หากคุณไม่ได้ติดตามสาขาใด ๆ บนรีโมท
คุณสามารถดูบันทึกบนที่เก็บภายในเครื่องเท่านั้น แต่สามารถรวมสาขาที่นำมาใช้ของรีโมตทั้งหมดที่คุณตั้งค่าไว้
ดังนั้นถ้าคุณลอกแบบ repo ...
git clone git@gitserver:folder/repo.git
origin/master
นี้จะเริ่มต้น
คุณสามารถเพิ่มระยะไกลที่จะซื้อคืนนี้นอกเหนือจากการเพิ่มให้ของorigin
production
จากภายในโฟลเดอร์โลคัลโคลน:
git remote add production git@production-server:folder/repo.git
หากเราต้องการดูบันทึกของproduction
เราจะต้องทำ:
git fetch --all
การดึงข้อมูลนี้จากการควบคุมระยะไกลทั้งหมด (การดึงข้อมูลเริ่มต้นโดยไม่--all
ดึงข้อมูลมาจากorigin
)
หลังจากดึงข้อมูลเราสามารถดูบันทึกบนproduction
รีโมตคุณจะต้องระบุสาขาด้วย
git log production/master
ตัวเลือกทั้งหมดจะทำงานเช่นเดียวกับที่ทำในสาขาท้องถิ่น
วิธีที่รวดเร็วในการทำเช่นนี้คือการโคลนโดยใช้--bare
คำหลักจากนั้นตรวจสอบบันทึก:
git clone --bare git@giturl tmpdir
cd tmpdir
git log branch
ฉันไม่เชื่อว่าเป็นไปได้ ฉันเชื่อว่าคุณต้องลอกเลียนแบบรีโมตรีโมตแบบโลคัลและดำเนินการgit fetch
กับมันก่อนที่คุณจะสามารถแก้ไขgit log
ได้
นี่คือสิ่งที่ได้ผลสำหรับฉัน:
git fetch --all
git log production/master
โปรดทราบว่าการดึงข้อมูลนี้จากรีโมททั้งหมดเช่นอาจเป็นคุณ"ต้องโคลน 2GB มูลค่าของวัตถุเพียงแค่มองผ่านบันทึกการกระทำ"
ฉันไม่แน่ใจว่าเมื่อเพิ่มตัวกรองแล้ว แต่เป็นวิธีการแยกวัตถุ blobs หากคุณต้องการดึงประวัติ / บันทึกอ้างอิง:
git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log
คุณสามารถรับบันทึกของเซิร์ฟเวอร์ระยะไกลได้อย่างง่ายดาย นี่คือวิธี:
(1) หากใช้ git ผ่าน ssh - เพียงแค่ลงชื่อเข้าใช้เซิร์ฟเวอร์ระยะไกลโดยใช้การเข้าสู่ระบบและรหัสผ่าน git ของคุณ - และ chdir โฟลเดอร์ระยะไกลที่ที่เก็บของคุณอยู่ - และเรียกใช้คำสั่ง "git log" ในที่เก็บของคุณบนเซิร์ฟเวอร์ระยะไกล
(2) หากใช้ git ผ่านโปรโตคอลการเข้าสู่ระบบมาตรฐานของ Unix เพียงแค่ telnet ไปยังเซิร์ฟเวอร์ระยะไกลของคุณและทำการบันทึก git ที่นั่น
หวังว่านี่จะช่วยได้
นี่คือฟังก์ชั่นทุบตีที่ทำให้ง่ายต่อการดูบันทึกในระยะไกล มันใช้เวลาสองข้อโต้แย้งไม่จำเป็น คนแรกเป็นสาขาที่เริ่มต้นไปยังต้นแบบ คนที่สองเป็นระยะไกล , ค่าเริ่มต้นให้การแสดงละคร
git_log_remote() {
branch=${1:-master}
remote=${2:-staging}
git checkout $remote/$branch
git fetch
git log
git checkout -
}
ตัวอย่าง:
$ git_log_remote
$ git_log_remote development origin