ฉันจะนำทางไปยังการกระทำที่เร็วที่สุดในที่เก็บ Github ได้อย่างไร?


152

ใน GitHub มีวิธีง่าย ๆ ในการนำทางไปสู่การกระทำที่เร็วที่สุดของโครงการโอเพ่นซอร์สขนาดใหญ่หรือไม่?

โครงการมีภาระผูกพันกว่า 13,000 โครงการ ณ วันนี้ ฉันไม่ต้องการกดปุ่ม "เก่ากว่า" บนหน้าประวัติการส่งข้อมูลเป็นร้อย ๆ ครั้งเพื่อเข้าถึงการส่งมอบครั้งแรก (หรือส่งครั้งแรก)


2
คุณถือว่าการโคลนที่เก็บเพื่อนำทางภายในเครื่องแทนไหม?
jub0bs


ข้อมูลเชิงลึก / ผู้สนับสนุนแสดงให้เห็นถึงช่วงเต็มรูปแบบของความมุ่งมั่นในสาขาหลัก
ToolmakerSteve

คำตอบ:


102

โคลนที่เก็บข้อมูลเปิดด้วยบรรทัดคำสั่งและเรียกใช้ $ git log --reverse

สิ่งนี้จะแสดงการกระทำในลำดับย้อนกลับ

จากนั้นคุณสามารถดูได้บน GitHub เมื่อคุณมี ID (ชื่อวัตถุ) ของการส่งครั้งแรก ... บางสิ่งบางอย่างเช่น ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


16
ฉันไม่อยากจะเชื่อเลยว่ามันแปลกมากซับซ้อนเกินไปฉันต้องร่อนผ่านเพื่อหาคำตอบที่เรียบง่ายและสมเหตุสมผล ขอบคุณ
Sammitch

7
หนึ่งบิดฉันจะเพิ่มonelineหาเรื่องนี้ - git log --reverse --onelineเพื่อให้คุณสามารถดูมันเป็นรายการ
rynmrtn

และถ้าคุณกำลังใช้คำสั่งของ Windows รวดเร็วและต้องการที่จะหลีกเลี่ยงการถูกดูดเข้าไปในกลุ่ม (?), git log --reverse --oneline | moreการใช้งาน moreพฤติกรรมมาตรฐานCtrl + C เพื่อออก
สินใจ

82

ไม่มี UI ที่ชัดเจนในการทำเช่นนี้ แต่มีวิธีการสร้าง URL ที่ถูกต้องเพื่อไปที่หน้าหนึ่งในบันทึกการกระทำ

สมมติว่าเราต้องการที่จะหาคนแรกที่กระทำของdotnet / coreclr พื้นที่เก็บข้อมูล ก่อนอื่นให้จดบันทึกจำนวนการคอมมิตในที่เก็บ: ปัจจุบันคือ 16,634 ตอนนี้ไปที่รายการกระทำและคลิกที่ "เก่า" ครั้งเดียว URL จะเป็นดังนี้:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

สังเกต+34ส่วนที่ นั่นคือจำนวนการกระทำที่ถูกข้ามไป เปลี่ยนเป็น 16,634 ลบ 1 ลบ 35 ต่อหน้าซึ่งให้URL นี้แก่เราซึ่งจะนำคุณไปยังหน้าแรกของคอร์รัปชั่นส่งประวัติ


4
ดีฉันสร้าง bookmarklet เพื่อทำสิ่งนี้ github.com/bpceee/oldest
bpceee

นี่คือคำตอบที่ดีในการดูการยอมรับเริ่มต้นในรายการการมอบหมายโครงการ
ม้วน

ฮ่าฮ่านี่มันเร็วกว่าวิธีที่แนะนำในคำตอบที่ยอมรับ ;-)
aderchox

46

กุมภาพันธ์ 2015: ใน GitHubจะมีวิธีที่ง่ายเพื่อนำทางไปยังที่เก่าแก่ที่สุดกระทำของโครงการขนาดใหญ่มาเปิด?

ใช่แล้วตอนนี้! (ความหมาย: โดยไม่ต้องคัดลอก repo และนำไปใช้git logในการโคลนท้องถิ่น)

ตั้งแต่เดือนมกราคม 2017 คุณมี " นำทางประวัติไฟล์เร็วขึ้นด้วยมุมมองการตำหนิที่ดีขึ้น " บน GitHub

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

นี่คือตัวอย่างการย้อนกลับไปสู่การคอมไพล์ git / git ที่เก่าแก่ที่สุด(47K + คอมมิชชัน) ... ในสามคลิก!

git สาธิต / git

เคล็ดลับที่นี่คือการเลือกไฟล์ที่มีแนวโน้มที่จะพบได้ในครั้งแรก (หรือต้นมาก) README.mdกระทำเช่น


8
โดยทั่วไปแล้วใช้งานได้ แต่ถือว่าคุณรู้ว่ามีไฟล์ใดอยู่เมื่อสร้าง repo และคุณสามารถค้นหาบรรทัดที่ไม่ได้เปลี่ยนไปหลายครั้งตั้งแต่เริ่มก่อตั้ง
Wilfred Hughes

1
@ WilfredHughes ฉันใช้วิธีนี้สำหรับ Go เพื่อข้ามกลับ 32,986 คอมมิชชันกับการคอมมิชชันแรกซึ่งเกิดขึ้นเป็นไข่อีสเตอร์ที่สนุก ในกรณีนี้ readme ไม่ได้กลับไปจนกว่าจะเริ่มต้นดังนั้นฉันจึงทำซ้ำกระบวนการโดยการกดBrowse filesและเปิดการตำหนิสำหรับไฟล์อื่น
andrewarchi

@andrewarchi ทำได้ดีมาก จริง ๆ แล้วการกระทำแรก ๆ คือไข่อีสเตอร์: stackoverflow.com/a/21981037/6309
VonC

ฉันคิดว่านี่เป็น "วิธีแก้ปัญหา" ในขณะที่คำตอบของ @schmalzy ตรงกว่า
Jimmy Bosse

@JimmyBosse มันไม่ใช่วิธีแก้ปัญหา มันเป็นคำตอบสำหรับคำถามเดิม git logทำงานเฉพาะถ้าคุณโคลน (อาจมาก) repo ท้องถิ่น หากคุณต้องการที่จะ " นำทาง " เพื่อกำปั้นกระทำแล้วนี่คือมัน
VonC

37

ฉันต้องการเห็นหนึ่งในโครงการแรกของโครงการnodejs ฉันทำสิ่งต่อไปนี้แล้ว

  1. เยี่ยมชมเว็บไซต์nodejs จากนั้นสังเกตว่าจำนวนรวมของการกระทำอยู่ที่ประมาณสองหมื่นสามพัน (23652 เพื่อความแม่นยำ) ณ เวลานี้

ป้อนคำอธิบายรูปภาพที่นี่

  1. ต่อไปฉันคลิกที่ลิงค์ที่ส่งและพาฉันไปที่https://github.com/nodejs/node/commits/masterตามที่แสดงด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

  1. ตอนนี้เลื่อนลงไปด้านล่างและฉันพบปุ่มใหม่และเก่ากว่า ปุ่มใหม่กว่าถูกปิดใช้งาน ผมคลิกปุ่มเก่าและมันเอาฉันไปhttps://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. สังเกตว่า url มี +34 ตอนนี้ฉันเปลี่ยนเป็น 23000 (เนื่องจากจำนวนการคอมมิทที่ฉันสังเกตเห็นคือ 23000) ดังนั้น URL ใหม่ที่ฉันลองใช้คือ

https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+23000

  1. ตอนนี้ฉันเกือบจะถึงแล้ว ด้วยการทำซ้ำอีกสองสามครั้งหรือโดยการคลิกปุ่มที่เก่ากว่าฉันถึงที่ที่ฉันต้องการ

2
นี่เป็นคำตอบที่ซ้ำกัน 2 คำตอบข้างบนของคุณหรือไม่ stackoverflow.com/a/49647826
Edric

2
เป็นคำตอบที่ซ้ำกัน แต่ฉันชอบภาพมันทำให้น่าสนใจยิ่งขึ้น
winner_joiner

7

คุณสามารถนำทางไปเป็นที่เก็บ GitHub แรกของการกระทำโดยใช้bookmarklet init

ในนั้น

bookmarkletไปได้อย่างรวดเร็วคุณกับครั้งแรกของการกระทำ repo

ภาพรวม

ความสามารถในการนำทางไปยังคอมมิชชันที่เก่าที่สุดใน repo ได้อย่างรวดเร็วนั้นมีประโยชน์มาก ไปข้างหน้าและลากbookmarklet (ลิงค์)ลงบนแถบที่คั่นหน้าของคุณและคลิกเมื่อใดก็ตามที่คุณต้องการไปที่การกระทำครั้งแรกของ repo

การใช้

ไปที่หน้า Landing Page ของ repo ใด ๆ(e.g. like the one you're on)และคลิกที่ bookmarklet ซึ่งจะนำคุณไปยังหน้าแรก โดยค่าเริ่มต้นมันจะติดตามmasterสาขา แต่ถ้าคุณเปลี่ยนbranchในหน้า Landing Page มันจะไปที่การกระทำครั้งแรกของสาขานั้น

ดึงจาก README.md บน GitHub


ข้อจำกัดความรับผิดชอบ : ฉันสนับสนุนการอัปเดต Readme เล็ก ๆ เพื่อเริ่มต้นไม่กี่นาทีก่อนโพสต์คำตอบนี้


7

คุณสามารถไปที่หน้าแรกของการกระทำด้วยสิ่งต่อไปนี้ซึ่งฉันเก็บไว้เป็นตัวอย่างในเครื่องมือ dev Chrome

function githubFirstCommitsPage() {
  let el = document.querySelector('.repository-content');
  let base = el.querySelector('a[data-pjax]').href;
  let count = el.querySelector('.commits .num')
    .textContent
    .trim()
    .replace(/[^\d\.\-]/g, "");
  count = count-36;
  let sha = el.querySelector('.commit-tease-sha')
    .href
    .split('/');
  sha = sha[sha.length-1];
  window.location = `${base}?after=${sha}+${count}`;   
}

githubFirstCommitsPage();

1
ขอบคุณ! ฉันไม่รู้ว่าคุณสามารถบันทึกตัวอย่างได้ดังนั้นโพสต์ของคุณจึงมีประโยชน์ในสองมิติ
bmacnaughton

6

คุณต้องใช้git log --reverseคำสั่งของคอมไพล์

สิ่งนี้จะคืนค่าประวัติของการทำคอมมิชชันที่ระบุในลำดับย้อนกลับ (เก่าที่สุดไปหาใหม่ที่สุด)

จากนั้นด้วยความช่วยเหลือของsedเวทมนตร์คุณสามารถมีบางสิ่งบางอย่างเช่นวันที่ของการกระทำครั้งแรก (ซึ่งเป็นสิ่งที่ฉันได้เห็นฉันต้องการตัวเองเสมอ)

git log --reverse | sed -n 3p

ท้ายที่สุดคุณอาจต้องการทำให้เป็นอัตโนมัติเช่นกัน (เนื่องจากส่วนใหญ่เป็นเรื่องน่าเบื่อในการพิมพ์คำสั่งหรือไม่สามารถจำได้) ดังนั้นเชลล์สคริปต์เช่นนี้อาจเข้ามาช่วย



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