ยอมรับประวัติบนที่เก็บรีโมต


206

ฉันพยายามเข้าถึงประวัติการส่งข้อมูลของสาขาในที่เก็บระยะไกล ฉันได้ดูเอกสารแต่ไม่สามารถหาข้อมูลที่สำคัญเกี่ยวกับวิธีการเข้าถึงประวัติการส่งมอบของ repo ระยะไกลโดยใช้ลูกค้า git ในพื้นที่ของฉัน

คำตอบ:


252
git log remotename/branchname

จะแสดงบันทึกของสาขาระยะไกลที่กำหนดในที่เก็บ แต่เฉพาะบันทึกที่คุณได้ "ดึง" จากพื้นที่เก็บข้อมูลของพวกเขาไปยัง "คัดลอก" ส่วนตัวของคุณจากที่เก็บระยะไกล

โปรดจำไว้ว่าการโคลนที่เก็บของคุณจะอัปเดตสถานะของสาขาระยะไกลใด ๆ โดยการทำgit fetchเท่านั้น คุณไม่สามารถเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์เพื่อตรวจสอบบันทึกที่นั่นสิ่งที่คุณทำคือดาวน์โหลดสถานะของเซิร์ฟเวอร์ด้วยgit fetchแล้วดูบันทึกของสาขาระยะไกลในพื้นที่

บางทีคำสั่งที่มีประโยชน์อื่นอาจเป็น:

git log HEAD..remote/branch

ซึ่งจะแสดงให้เห็นถึงความมุ่งมั่นที่อยู่ในสาขาระยะไกล แต่ไม่ได้อยู่ในสาขาปัจจุบันของคุณ ( HEAD)


8
"คุณไม่สามารถเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์เพื่อตรวจสอบบันทึกได้" - นั่นเป็นปัญหาที่ฉันมี
Brian J

1
ฉันเพิ่งได้รับการเปลี่ยนแปลงในท้องถิ่น ... สังเกตสิ่งที่อยู่ห่างไกลหรือแม้แต่ดึงข้อมูลมาก่อน
Loenix

6
เมื่อทำgit fetchคุณจะต้องใช้--allเพื่อดึงจากรีโมท
ocodo

25
มันแย่มากดังนั้นฉันต้องลอกเลียนแบบวัตถุมูลค่า 2GB เพื่อดูบันทึกการกระทำ
TWiStErRob

2
สวัสดี @TWiStErRob คุณสามารถบรรเทาความเจ็บปวดได้ด้วยการจัดการจำนวนข้อมูลที่ดึงมาด้วยโคลนตื้น (ดู - ลึกลงไปในgit-scm.com/docs/git-clone ) จากนั้นจัดการดึงข้อมูลด้วย (ดู "ตื้น" ในgit-scm .com / docs / git-fetch )
qneill

66

NB "จุดเริ่มต้น" ด้านล่างใช้เพื่อแสดงถึงต้นน้ำของที่เก็บโคลนแทนที่ "จุดเริ่มต้น" ด้วยชื่อที่สื่อความหมายสำหรับ repo ระยะไกล "การอ้างอิงระยะไกล" สามารถใช้รูปแบบเดียวกับที่ใช้ในคำสั่ง clone

git remote add origin <remote reference>
git fetch
git log origin/master

2
@ user1795998 URL Git ที่เก็บระยะไกลเช่นgit://git.somedomain.tld/some/repo
gertvdijk

1
คุณไม่จำเป็นต้องระบุ<refspec>เมื่อดึง (หรือใช้fetch --all) หากคุณไม่ได้ติดตามสาขาใด ๆ บนรีโมท
gertvdijk

1
คุณหมายความว่าอย่างไรกับ "ผู้จำหน่ายโครงการ / diag" นั่นคือโฟลเดอร์ภายในที่เก็บหรือไม่? สาขาอื่น
LopSae

1
ที่เก็บสามารถมีได้หลายสาขา แต่ "โปรเจ็กต์" ไม่ใช่คำที่เกี่ยวข้องกับคอมไพล์จากนั้นความสับสนกับความหมายของ "โปรเจ็กต์" ในกรณีนี้ แต่ถึงกระนั้นสิ่งที่จะทำอย่างไรกับคำถาม?
LopSae

1
ฉันไม่เชื่อว่าเป็นไปได้ที่จะทำเช่นนี้ใน GIT คุณต้องโคลนที่เก็บระยะไกลก่อนที่คุณจะสามารถออกบันทึก git ได้
user959690

12

คุณสามารถดูบันทึกบนที่เก็บภายในเครื่องเท่านั้น แต่สามารถรวมสาขาที่นำมาใช้ของรีโมตทั้งหมดที่คุณตั้งค่าไว้

ดังนั้นถ้าคุณลอกแบบ 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

ตัวเลือกทั้งหมดจะทำงานเช่นเดียวกับที่ทำในสาขาท้องถิ่น


12

วิธีที่รวดเร็วในการทำเช่นนี้คือการโคลนโดยใช้--bareคำหลักจากนั้นตรวจสอบบันทึก:

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch

11

ฉันไม่เชื่อว่าเป็นไปได้ ฉันเชื่อว่าคุณต้องลอกเลียนแบบรีโมตรีโมตแบบโลคัลและดำเนินการgit fetchกับมันก่อนที่คุณจะสามารถแก้ไขgit logได้


1
ลองนึกภาพว่าคุณลอกแบบ repo เป็น local แล้วทำการเปลี่ยนแปลง . จากนั้นคุณต้องการตรวจสอบว่าใครมีความมุ่งมั่นที่จะ repo ระยะไกล
Chhorn Elit

2
หากคุณเปลี่ยนคำตอบนี้เป็น "ไม่สามารถทำได้" นี่เป็นคำตอบที่ดีที่สุด ไม่มีวิธีการเข้าถึงประวัติการกระทำของ repo ระยะไกลโดยใช้ไคลเอนต์ git ระยะไกล
qneill

11

นี่คือสิ่งที่ได้ผลสำหรับฉัน:

git fetch --all 
git log production/master

โปรดทราบว่าการดึงข้อมูลนี้จากรีโมททั้งหมดเช่นอาจเป็นคุณ"ต้องโคลน 2GB มูลค่าของวัตถุเพียงแค่มองผ่านบันทึกการกระทำ"


2

ฉันไม่แน่ใจว่าเมื่อเพิ่มตัวกรองแล้ว แต่เป็นวิธีการแยกวัตถุ blobs หากคุณต้องการดึงประวัติ / บันทึกอ้างอิง:

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log

นี้เป็นที่สมบูรณ์แบบ ให้คำตอบอื่น ๆ มันจะยอดเยี่ยมถ้ามันสามารถโดดเด่นถัดจากคำตอบที่ให้
Eric Cousineau

0

คุณสามารถรับบันทึกของเซิร์ฟเวอร์ระยะไกลได้อย่างง่ายดาย นี่คือวิธี:

(1) หากใช้ git ผ่าน ssh - เพียงแค่ลงชื่อเข้าใช้เซิร์ฟเวอร์ระยะไกลโดยใช้การเข้าสู่ระบบและรหัสผ่าน git ของคุณ - และ chdir โฟลเดอร์ระยะไกลที่ที่เก็บของคุณอยู่ - และเรียกใช้คำสั่ง "git log" ในที่เก็บของคุณบนเซิร์ฟเวอร์ระยะไกล

(2) หากใช้ git ผ่านโปรโตคอลการเข้าสู่ระบบมาตรฐานของ Unix เพียงแค่ telnet ไปยังเซิร์ฟเวอร์ระยะไกลของคุณและทำการบันทึก git ที่นั่น

หวังว่านี่จะช่วยได้


13
ในการใช้ถ้อยคำใหม่ "คุณไม่สามารถรับบันทึกของเซิร์ฟเวอร์ระยะไกลคุณต้องเข้าสู่ระบบและรับบันทึกโดยใช้ไคลเอนต์ git ในพื้นที่"
qneill

เพียงแค่ลบคำตอบนี้ก็ไม่ได้ตอบคำถามและไม่ว่าผู้ใช้คอมไพล์ส่วนใหญ่ไม่ได้เข้าถึงเปลือกเซิร์ฟเวอร์
nhed

0

นี่คือฟังก์ชั่นทุบตีที่ทำให้ง่ายต่อการดูบันทึกในระยะไกล มันใช้เวลาสองข้อโต้แย้งไม่จำเป็น คนแรกเป็นสาขาที่เริ่มต้นไปยังต้นแบบ คนที่สองเป็นระยะไกล , ค่าเริ่มต้นให้การแสดงละคร

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.