So verlinken Sie auf Github auf eine bestimmte Zeilennummer

371

Ich weiß, dass ich mit einer bestimmten Zeilennummer in einer Datei auf einem Github-Repo verknüpfen kann (ich bin mir sicher, dass ich das schon einmal gesehen habe) ...

Kann mir jemand sagen, wie das geht?

sfletche
quelle

Antworten:

587

Verlinken Sie nicht nur auf die Zeilennummern! Stellen Sie sicher, dass Sie auch die kanonische URL verwenden . Andernfalls haben Sie beim Aktualisieren dieser Datei eine URL, die auf die falschen Zeilen verweist!

So stellen Sie eine dauerhafte Verbindung zu den richtigen Zeilen her:

Klicken Sie auf die gewünschte Zeilennummer (wie Zeile 18), und die URL in Ihrem Browser wird #L18am Ende angeheftet. Sie klicken buchstäblich auf die 18linke Seite, nicht auf die Codezeile. Sieht aus wie das:

Zeile 18 ausgewählt

Und jetzt sieht die URL Ihres Browsers folgendermaßen aus:

https://github.com/git/git/blob/master/README#L18

Wenn Sie mehrere Zeilen auswählen möchten, halten Sie einfach die Umschalttaste gedrückt und klicken Sie auf eine zweite Zeilennummer wie Zeile 20. Sieht folgendermaßen aus:

Geben Sie hier die Bildbeschreibung ein

Und jetzt sieht die URL Ihres Browsers folgendermaßen aus:

https://github.com/git/git/blob/master/README#L18-L20

Hier ist der wichtige Teil:

Rufen Sie nun die kanonische URL für dieses bestimmte Commit ab, indem Sie die yTaste drücken. Die URL in Ihrem Browser ändert sich wie folgt:

https://github.com/git/git/blob/5bdb7a78adf2a2656a1915e6fa656aecb45c1fc3/README#L18-L20

Dieser Link enthält den tatsächlichen SHA-Hash für dieses bestimmte Commit und nicht die aktuelle Version der Datei master. Das bedeutet, dass dieser Link für immer funktioniert und nicht auf die Zeilen 18 bis 20 der zukünftigen Version dieser Datei verweist.

Genießen Sie jetzt das Leuchten Ihrer neuen permanenten Verbindung. ;-);

Update 29.09.2017: Wie von @watashiSHUN hervorgehoben, hat github es jetzt einfacher gemacht, den permanenten Link zu erhalten, indem ...links ein Menü bereitgestellt wird, nachdem Sie eine oder mehrere Zeilen ausgewählt haben. Bitte stimmen Sie auch der Antwort von @ watashiSHUN zu.

GitHub Permalink-Menü

Update 25.03.2016: Beispiel: Im obigen Beispiel habe ich in der URL auf die Datei "README" verwiesen. Diese nicht-kanonischen URLs funktionierten tatsächlich, als diese Antwort geschrieben wurde. Aber jetzt funktionieren diese URLs nicht mehr, seitdem sie READMEverschoben wurden README.md. Die kanonische URL mit SHA-Hash funktioniert jedoch weiterhin wie erwartet.

broc.seib
quelle
3
Die y-Taste tut nichts für mich. Wurde dies geändert? Ich versuche es mit Google Chrome Dev Channel.
k0pernikus
4
Es funktioniert immer noch ... Docs sagen immer noch, dass sie auch den ySchlüssel verwenden sollen ... help.github.com/articles/getting-permanent-links-to-files
broc.seib
2
Diese Umschalttaste + Klicken auf die zweite Zeile für einen Block ist gut! Ich habe die URL manuell bearbeitet, um die zweite Zeile hinzuzufügen :). Folgefrage, was ist, wenn ich die Zeilen 2, 4 und 17-22 hervorheben wollte? Ist das möglich oder kann ich jeweils nur einen Block markieren?
Vorliebe
3
@ tr3buchet Ich habe gerade die Github-Unterstützung gepingt - das ist momentan nicht möglich. Sie sagten, sie würden das Feature in Betracht ziehen, aber keine Versprechen. Ich habe angeboten, dass das Format so etwas wie L18-L20,L29ist und dass eine Person CTRLklicken kann, um nicht aufeinanderfolgende Zeilen hinzuzufügen. Ich denke, Ihre Idee ist ein großartiger Vorschlag und wäre sehr nützlich.
Broc.seib
2
Was passiert , wenn READMEist README.md?
zwcloud
56

@ broc.seib hat eine ausgefeilte Antwort . Ich möchte nur darauf hinweisen, dass ygithub jetzt eine sehr einfache Benutzeroberfläche hat, die Ihnen dabei hilft, den permanenten Link zu erhalten

  1. Wählen Sie eine Zeile aus, indem Sie auf die Zeilennummer klicken, oder wählen Sie mehrere Zeilen aus, indem Sie sie gedrückt halten shift(genauso wie Sie mehrere Ordner im Datei-Explorer auswählen). Geben Sie hier die Bildbeschreibung ein

  2. Erweitern ...und klicken Sie in der rechten Ecke der ersten ausgewählten Zeilecopy permalink Geben Sie hier die Bildbeschreibung ein

  3. Das war's, ein Link mit ausgewählten Zeilen und Commit-Hash wird in Ihre Zwischenablage kopiert : https://github.com/python/cpython/blob/c82b7f332aff606af6c9c163da75f1e86514125e/Doc/Makefile#L1-L4
watashiSHUN
quelle
18

Klicken Sie auf die Zeilennummer und kopieren Sie den Link aus der Adressleiste. Um einen Bereich auszuwählen, klicken Sie auf die Nummer und dann bei gedrückter Umschalttaste auf die spätere Nummer.

Alternativ haben die Links ein relativ einfaches Format. Fügen Sie #L<number>sie einfach an das Ende dieser bestimmten Zeilennummer hinzu, indem Sie den Link zur Datei verwenden. Hier ist ein Link zur dritten Zeile des gitRepositorys README:

https://github.com/git/git/blob/master/README#L3

Screenshot mit hervorgehobener Zeile und geänderter Adresszeile

Leigh
quelle
3
Vergessen Sie nicht, dass diese URL bei Änderungen der Datei immer noch auf Zeile 3 verweist, die möglicherweise neuen Code enthält und möglicherweise nicht Ihren Wünschen entspricht! Ich habe eine andere Lösung angeboten, die eine dauerhafte Verbindung ergibt. Tipp: einfach drücken y. ;-)
broc.seib
4
Die Verbindung ist unterbrochen
pmrotule
12

Ein Permalink zu einem Code-Snippet wird in ein Kommentarfeld für Pull-Anforderungen eingefügt

Sie können Permalinks verwenden, um Codefragmente in Probleme, PRs usw. aufzunehmen.

Verweise:

https://help.github.com/de/articles/creating-a-permanent-link-to-a-code-snippet

Gayan Weerakutti
quelle
2
Ziemlich schönes GIF!
Giovanni Benussi
Entschuldigen Sie das Off-Topic, aber mit welchem ​​Tool erstellen Sie es?
Giovanni Benussi
@GiovanniBenussi Es ist von GitHub. Siehe den Link.
Gayan Weerakutti
Ich meine für das GIF :-P hahaha
Giovanni Benussi
1
@GiovanniBenussi Ich weiß nicht , was verwendet reversiblean aber gelegentlich ich machen Gifs wie dies ein nettes Tool namens „screentogif“, sollten Sie es ausprobieren github.com/NickeManarin/ScreenToGif
SamGamgee
6

Viele Editoren (siehe aber auch den Abschnitt Befehle unten) unterstützen das Verknüpfen mit der Zeilennummer oder dem Bereich einer Datei auf GitHub oder BitBucket (oder anderen). Hier ist eine kurze Liste:

Atom

Auf GitHub öffnen

Emacs

Git-Link

Erhabener Text

GitLink

Vim

gitlink-vim


Befehle

  • git-link - Git-Unterbefehl zum Abrufen eines Repo-Browser-Links zu einem Git-Objekt
  • ghwd - Öffnen Sie die Github-URL, die dem aktuellen Zweig und Arbeitsverzeichnis Ihrer Shell entspricht
DBagBaggerWithSwagger
quelle
0

Bezogen auf das Verknüpfen README.mdeines GitHub-Repositorys mit einer bestimmten Zeilennummer des Codes

Sie haben drei Fälle:

  1. Wir können auf (benutzerdefiniertes Commit ) verlinken

    Link wird jedoch IMMER mit der alten Dateiversion verknüpft, die beispielsweise KEINE neuen Updates im Hauptzweig enthält. Beispiel:

    https://github.com/username/projectname/blob/b8d94367354011a0470f1b73c8f135f095e28dd4/file.txt#L10
    
  2. Wir können auf (benutzerdefinierte Verzweigung ) wie (Master-Verzweigung) verlinken . Der Link wird jedoch IMMER auf die neueste Dateiversion verweisen, die neue Updates enthält. Aufgrund neuer Updates kann der Link auf eine ungültige Geschäftsleitungsnummer verweisen. Beispiel:

    https://github.com/username/projectname/blob/master/file.txt#L10
    
  3. GitHub kann AUTO-Links zu keiner Datei erstellen, weder zu (benutzerdefiniertes Commit) noch zu (Master-Zweig). Aufgrund der folgenden geschäftlichen Probleme:

    • Liniengeschäft bedeutet, in der neuen Datei darauf zu verlinken
    • Länge des markierten Zielcodes, der geändert werden kann
ahmednabil88
quelle
0

Für eine Zeile in einer Pull-Anfrage.

https://github.com/foo/bar/pull/90/files#diff-ce6bf647d5a531e54ef0502c7fe799deR27
https://github.com/foo/bar/pull/
90 <- PR number
/files#diff-
ce6bf647d5a531e54ef0502c7fe799de <- MD5 has of file name from repo root
R <- Which side of the diff to reference (merge-base or head). Can be L or R.
27 <- Line number

Dies führt Sie zu einer Linie, solange L und R korrekt sind. Ich bin nicht sicher, ob es eine Möglichkeit gibt, L OR RIe zu besuchen. Wenn der PR eine Zeile hinzufügt, müssen Sie diese verwenden R. Wenn eine Zeile entfernt wird, müssen Sie verwenden L.

Von: Generieren Sie eine Zeilenzeiger-URL in Github Pull Request

Vaughan
quelle