ฉันพยายามเข้าถึงประวัติการส่งข้อมูลของสาขาในที่เก็บระยะไกล ฉันได้ดูเอกสารแต่ไม่สามารถหาข้อมูลที่สำคัญเกี่ยวกับวิธีการเข้าถึงประวัติการส่งมอบของ 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