Cách liên kết với số dòng cụ thể trên github


371

Tôi biết tôi có thể liên kết đến một số dòng cụ thể trên một tệp trên repo github (Tôi chắc chắn tôi đã thấy điều này trước đây) ...

Ai đó có thể nói cho tôi cách làm cái này không?

Câu trả lời:


587

Đừng chỉ liên kết đến các số dòng! Hãy chắc chắn để sử dụng URL chuẩn . Mặt khác, khi tệp đó được cập nhật, bạn sẽ có một URL trỏ đến các dòng sai!

Làm thế nào để tạo một liên kết vĩnh viễn đến đúng dòng:

Nhấp vào số dòng bạn muốn (như dòng 18) và URL trong trình duyệt của bạn sẽ được xử lý #L18ở cuối. Bạn thực sự nhấp vào 18bên trái, không phải dòng mã. Trông như thế này:

dòng 18 được chọn

Và bây giờ URL của trình duyệt của bạn trông như thế này:

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

Nếu bạn muốn chọn nhiều dòng, chỉ cần giữ phím shift và nhấp vào số dòng thứ hai, như dòng 20. Hình như thế này:

nhập mô tả hình ảnh ở đây

Và bây giờ URL của trình duyệt của bạn trông như thế này:

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

Đây là phần quan trọng:

Bây giờ hãy lấy url chuẩn cho cam kết cụ thể đó bằng cách nhấn yphím. URL trong trình duyệt của bạn sẽ thay đổi để trở thành một cái gì đó như thế này:

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

Liên kết đó chứa hàm băm SHA thực tế cho cam kết cụ thể đó, thay vì phiên bản hiện tại của tệp trên master. Điều đó có nghĩa là liên kết này sẽ hoạt động mãi mãi và không trỏ đến các dòng 18-20 của bất kỳ phiên bản tương lai nào của tệp đó có thể chứa.

Bây giờ đắm mình trong ánh sáng của liên kết vĩnh viễn mới của bạn. ;-)

cập nhật ngày 29/9/2017: Như @watashiSHUN đã chỉ ra, giờ đây github đã giúp việc lấy liên kết vĩnh viễn dễ dàng hơn bằng cách cung cấp ...menu bên trái sau khi bạn chọn một hoặc nhiều dòng. Vui lòng upvote @ watashiSHUN 'câu trả lời quá.

Menu permitink GitHub

cập nhật 25/03/2016: Trường hợp tại điểm - trong ví dụ trên, tôi đã đề cập đến tệp "README" trong URL. Những url không chính tắc đó thực sự hoạt động khi câu trả lời này được viết. Nhưng bây giờ những url đó không còn hoạt động kể từ khi READMEđược chuyển đến README.md. Nhưng URL chuẩn với hàm băm SHA vẫn hoạt động, đúng như mong đợi.


3
Phím y không làm gì cho tôi. Điều này đã được thay đổi? Đang thử từ Google Dev Dev Channel.
k0pernikus

4
Nó vẫn hoạt động ... Tài liệu vẫn nói sử dụng ykhóa quá ... help.github.com/articles/getting-permanent-links-to-files
broc.seib 6/12/2015

2
sự thay đổi + nhấp vào dòng thứ hai cho một khối là một điều tốt! Tôi đã tự chỉnh sửa URL để thêm dòng thứ hai :). câu hỏi tiếp theo, nếu tôi muốn dòng 2, 4 và từ 17-22 được tô sáng thì sao? Điều đó có thể hay tôi chỉ có thể làm nổi bật một khối tại một thời điểm?
thiên hướng

3
@ tr3buchet Tôi vừa ping hỗ trợ github - hiện tại không thể thực hiện được. Họ nói rằng họ sẽ xem xét tính năng, nhưng không hứa hẹn. Tôi đã đề nghị rằng định dạng này là một cái gì đó giống như L18-L20,L29, và một người có thể CTRLbấm vào để thêm các dòng không liên tiếp. Tôi nghĩ ý tưởng của bạn là một gợi ý tuyệt vời và sẽ rất hữu ích.
broc.seib

2
Nếu READMEREADME.mdgì?
zwcloud

56

@ broc.seib có một câu trả lời tinh vi , tôi chỉ muốn chỉ ra rằng thay vì nhấn yđể có được liên kết vĩnh viễn, giờ đây github có một giao diện người dùng rất đơn giản giúp bạn đạt được nó

  1. Chọn dòng bằng cách nhấp vào số dòng hoặc chọn nhiều dòng bằng cách hạ cấp shift(giống như cách bạn chọn nhiều thư mục trong trình duyệt tệp) nhập mô tả hình ảnh ở đây

  2. ở góc bên phải của dòng đầu tiên bạn đã chọn, mở rộng ...và nhấpcopy permalink nhập mô tả hình ảnh ở đây

  3. đó là, một liên kết với các dòng được chọn và hàm băm cam kết được sao chép vào bảng tạm của bạn : https://github.com/python/cpython/blob/c82b7f332aff606af6c9c163da75f1e86514125e/Doc/Makefile#L1-L4

18

Bấm vào số dòng, sau đó sao chép và dán liên kết từ thanh địa chỉ. Để chọn một phạm vi, bấm vào số, và sau đó thay đổi bấm vào số sau.

Ngoài ra, các liên kết là một định dạng tương đối đơn giản, chỉ cần thêm #L<number>vào cuối cho số dòng cụ thể đó, sử dụng liên kết đến tệp. Đây là một liên kết đến dòng thứ ba của gitkho lưu trữ README:

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

Ảnh chụp màn hình với dòng được tô sáng và dòng địa chỉ được sửa đổi


3
Đừng quên rằng nếu tệp thay đổi, URL này sẽ vẫn trỏ đến dòng 3, có thể chứa mã mới và có thể không phải là thứ bạn muốn! Tôi đã đưa ra một giải pháp khác mang lại một liên kết vĩnh viễn. Gợi ý: chỉ cần nhấn y. ;-)
broc.seib

4
Liên kết bị hỏng
pmrotule

12

một permalink cho một đoạn mã được dán vào trường nhận xét yêu cầu kéo

Bạn có thể sử dụng permalinks để bao gồm các đoạn mã trong các vấn đề, PR, v.v.

Người giới thiệu:

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


2
Gif khá đẹp!
Giovanni Benussi

Xin lỗi vì lạc đề, nhưng bạn sử dụng công cụ nào để tạo ra nó?
Giovanni Benussi

@GiovanniBenussi Đó là từ GitHub. Xem liên kết.
Gayan Weerakutti

Ý tôi là cho gif :-P hahaha
Giovanni Benussi

1
@GiovanniBenussi Tôi không biết Reveriblean đã sử dụng cái gì nhưng thỉnh thoảng tôi tạo ra các gif như thế này bằng một công cụ hay gọi là "screentogif", bạn nên dùng thử github.com/NickeManarin/ScreenToGif
SamGamgee

6

Nhiều trình soạn thảo (nhưng cũng thấy phần Lệnh bên dưới) hỗ trợ liên kết đến số dòng hoặc phạm vi của tệp trên GitHub hoặc BitBucket (hoặc các loại khác). Đây là một danh sách ngắn:

Nguyên tử

Mở trên GitHub

Emacs

liên kết git

Văn bản cao siêu

GitLink

Vim

gitlink-vim


Các lệnh

  • git-link - Tiểu ban Git để nhận liên kết trình duyệt repo đến đối tượng git
  • ghwd - Mở URL github phù hợp với thư mục làm việc và chi nhánh hiện tại của shell của bạn

0

Liên quan đến cách liên kết đến README.mdkho lưu trữ GitHub với số dòng mã cụ thể

Bạn có ba trường hợp:

  1. Chúng tôi có thể liên kết đến ( cam kết tùy chỉnh )

    Nhưng Liên kết sẽ LUÔN liên kết đến phiên bản tệp cũ, ví dụ sẽ KHÔNG chứa các bản cập nhật mới trong nhánh chính. Thí dụ:

    https://github.com/username/projectname/blob/b8d94367354011a0470f1b73c8f135f095e28dd4/file.txt#L10
    
  2. Chúng tôi có thể liên kết đến ( chi nhánh tùy chỉnh ) như (nhánh chính). Nhưng liên kết sẽ LUÔN liên kết đến phiên bản tệp mới nhất sẽ chứa các bản cập nhật mới. Do các cập nhật mới, liên kết có thể trỏ đến số dòng doanh nghiệp không hợp lệ. Thí dụ:

    https://github.com/username/projectname/blob/master/file.txt#L10
    
  3. GitHub KHÔNG thể tạo liên kết TỰ ĐỘNG với bất kỳ tệp nào thành (cam kết tùy chỉnh) cũng như (chi nhánh chính) Vì các vấn đề kinh doanh sau:

    • hàngý nghĩa kinh doanh , để liên kết với nó trong tập tin mới
    • độ dài của mã mục tiêu được tô sáng có thể thay đổi

0

Đối với một dòng trong một yêu cầu kéo.

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

Điều này sẽ đưa bạn đến một dòng miễn là L và R là chính xác. Tôi không chắc có cách nào để truy cập L OR RIe Nếu PR thêm một dòng bạn phải sử dụng R. Nếu nó loại bỏ một dòng bạn phải sử dụng L.

Từ: Tạo URL con trỏ dòng vào Yêu cầu kéo Github

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.