479

Tôi đoán hầu hết các bạn, các nhà phát triển, sử dụng bất kỳ VCS nào và tôi hy vọng một số bạn sử dụng Git. Bạn có bất cứ mẹo hay mẹo nào để lấy URL tải xuống cho một tệp trong kho không?

Tôi không muốn URL để hiển thị tệp thô; trong trường hợp nhị phân thì không có gì.

http://support.github.com/discussions/feature-requests/41-doad-single-file

Thậm chí có thể sử dụng GitHub làm "máy chủ tải xuống" không?

Nếu chúng tôi quyết định chuyển sang Google Code, chức năng được đề cập có được trình bày ở đây không?

Hoặc có bất kỳ dịch vụ lưu trữ và VCS miễn phí nào cho các dự án nguồn mở không?

|
481

Git không hỗ trợ tải xuống các phần của kho lưu trữ. Bạn phải tải xuống tất cả. Nhưng bạn sẽ có thể làm điều này với GitHub.

Khi bạn xem một tập tin, nó có một liên kết đến phiên bản "thô". Các URL được xây dựng như vậy

https://github.com/user/repository/raw/branch/filename

Bằng cách điền vào chỗ trống trong URL, bạn có thể sử dụng Wget hoặc cURL (với -Ltùy chọn, xem bên dưới) hoặc bất cứ điều gì để tải xuống một tệp. Một lần nữa, bạn sẽ không nhận được bất kỳ tính năng kiểm soát phiên bản đẹp nào được Git sử dụng bằng cách này.

Cập nhật: Tôi nhận thấy bạn đề cập đến việc này không hoạt động đối với các tệp nhị phân. Bạn có thể không nên sử dụng tệp nhị phân trong kho Git của mình, nhưng GitHub có phần tải xuống cho mỗi kho lưu trữ mà bạn có thể sử dụng để tải lên tệp. Nếu bạn cần nhiều hơn một nhị phân, bạn có thể sử dụng tệp .zip. URL để tải xuống tệp đã tải lên là:

https://github.com/downloads/user/repository/filename

Lưu ý rằng các URL được cung cấp ở trên, từ các liên kết trên github.com, sẽ chuyển hướng đến raw.githubusercontent.com. Bạn không nên trực tiếp sử dụng URL được cung cấp bởi chuyển hướng HTTP 302 này bởi vì, theo RFC 2616 : "Vì việc chuyển hướng có thể bị thay đổi, nên khách hàng NÊN tiếp tục sử dụng URI yêu cầu cho các yêu cầu trong tương lai."

|
454
  1. Đi đến tệp bạn muốn tải xuống.
  2. Nhấp vào nó để xem nội dung trong Giao diện người dùng GitHub.
  3. Ở phía trên bên phải, click chuột phải các Rawnút.
  4. Lưu thành...
|
33

Bạn có thể sử dụng API V3 để nhận tệp thô như thế này (bạn sẽ cần mã thông báo OAuth):

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path

Tất cả điều này phải đi trên một dòng. Các -Otùy chọn lưu các tập tin trong thư mục hiện hành. Bạn có thể sử dụng -o filenameđể chỉ định một tên tệp khác.

Để nhận mã thông báo OAuth, hãy làm theo các hướng dẫn tại đây: https://help.github.com/articles/creating-an-access-token-for-command-line-use

Tôi cũng đã viết nó như một ý chính: https://gist.github.com/madrobby/9476733

|
  • 1

    Điều này là tốt, nhưng thật không may, nó chỉ hỗ trợ các tệp có kích thước tối đa 1 MiB.

    – Le Nhan 08:23:18 06/08/2014
  • 1

    Nếu thực hiện điều này trong một chương trình, hãy đảm bảo User-Agent được đặt.

    – Võ Diệu Hiền 21:28:24 29/10/2014
  • 1

    Bạn có thể cho một số ví dụ về con đường. Nếu bạn repo là my-repo và tệp bạn muốn nhận là x / y / z.txt thì URL sẽ là ... Thật khó để tìm ra rằng / chủ sở hữu / repo / nên được điền vào bởi tôi. Cảm ơn.

    – Vũ Ðài Trang 19:07:18 21/09/2016
  • 1

    Điều này hoạt động tốt nhưng có một nhược điểm. Bạn không phải luôn luôn là phiên bản mới nhất của một tập tin. Cố gắng sửa đổi tệp, đừng chờ đợi quá nhiều và cố gắng truy xuất tệp bằng phương pháp này. Bạn sẽ chỉ nhận được phiên bản trước thay thế.

    – Ngô Hoài Nam 10:42:02 11/04/2017
14

GitHub Mate giúp tải xuống một tệp dễ dàng, chỉ cần nhấp vào biểu tượng để tải xuống, hiện tại nó chỉ hoạt động trên Chrome.

|
  • 1

    Điều này không hoạt động.

    – Le Nhan 00:02:44 12/04/2014
  • 1

    @jcollum Đã kiểm tra ngay bây giờ, làm việc cho tôi. Bạn có thể chắc chắn rằng bạn đang sử dụng phiên bản mới nhất? hoặc cho tôi biết lỗi. Vui mừng để giúp bạn làm cho nó hoạt động.

    – Võ Diệu Hiền 07:14:10 12/04/2014
  • 1

    @CamSong hả? ....

    – Vũ Ðài Trang 02:49:33 13/04/2014
  • 1

    Tôi đang dùng phiên bản Chrome mới nhất, 34.0.1847.116 và điều này chắc chắn không hoạt động. Bạn đang sử dụng hệ điều hành nào? Tôi trên OS X Mavericks.

    – Ngô Hoài Nam 23:05:46 14/04/2014
  • 1

    Tôi đã thử nghiệm trên Chrome 34 trong Windows 7 và OS X Mavericks, cả hai đều hoạt động. Khá lạ nếu không làm việc hả? Xin lưu ý rằng thư mục không thể tải xuống. Có lẽ bạn có thể thử trên một máy khác.

    – Tạ Thu Vọng 13:28:39 15/04/2014
13

Theo ý chính này , bạn có thể sử dụng wget hoặc cURL:

  1. Nhấp vào tên tệp trong repo GitHub.
  2. Nhấn Raw để hiển thị nội dung tập tin.
  3. Sao chép URL trong trình duyệt của bạn.
  4. Trong dòng lệnh, chạy một trong hai:
    • wget --no-check-certificate --content-disposition https://URL-from-step3/
    • curl -LJO https://URL-from-step3/
|
12

Điều này hiện có thể có trong GitHub cho bất kỳ tệp nào. Bạn cần dịch các tệp của mình cho raw.github.com. Ví dụ: nếu tệp của bạn nằm trong kho lưu trữ của bạn tại:

https://github.com/<username>/<repo>/some_directory/file.rb

Sử dụng wget bạn có thể lấy tệp thô từ:

https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb

Rails Composer là một ví dụ tuyệt vời về điều này.

|
10

Để theo dõi những gì thomasfuchs đã nói nhưng thay vào đó, người dùng GitHub Enterprise đây là những gì bạn có thể sử dụng.

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://your_domain/api/v3/repos/owner/repo/contents/path

Ngoài ra, đây là tài liệu API https://developer.github.com/v3/repose/contents

|
9

Bạn có thể sử dụng curlcách này:

curl -OL https://raw.githubusercontent.com/<username>/<repo-name>/<branch-name>/path/to/file

Ocó nghĩa là curl tải nội dung
Lcó nghĩa là curl theo chuyển hướng

|
7

Trong trường hợp bạn muốn tải xuống một tệp zip từ githubbằng cách sử dụngwget

wget -O filename.zip https://github.com/downloads/user/repository/filename.zip?raw=true

xem trang web này để biết thêm chi tiết

|
4

Có một phần mở rộng chrome được gọi là Tăng cường Github

Nó sẽ thêm một nút tải xuống trực tiếp ở bên phải của mỗi tệp.

|
  • 1

    Nó hoạt động hoàn hảo với tôi, và nó khá gọn gàng!

    – Tạ Thu Liên 17:02:40 21/11/2018
  • 1

    Điều này tốt hơn Github Mate chỉ vì nó không yêu cầu quyền "Đọc tất cả lịch sử duyệt web của bạn"! Nhớ nhấp chuột phải vào nút tải xuống> Lưu liên kết dưới dạng.

    – Tạ Thảo Sương 08:45:43 19/02/2019
4

Phương pháp này hoạt động với Windows vì tôi chưa bao giờ sử dụng MAC vì vậy tôi không biết các phím thay thế trong MAC cho các phím mà tôi sẽ đề cập dưới đây là gì.

Hãy nói về các tệp CSV. NẾU bạn muốn tải xuống tệp CSV:

  1. Đi đến tập dữ liệu cụ thể mà bạn muốn tải xuống và nhấp vào nó.
  2. Bạn sẽ thấy nút "Nguyên" ở phía trên bên phải của tập dữ liệu.
  3. Nhấn "Alt" và sau đó nhấp chuột trái vào nút "Nguyên".
  4. Toàn bộ CSV sẽ tải xuống trong hệ thống của bạn.

Remeber, bạn phải nhấn Alt và nhấp chuột trái đồng thời. Chỉ cần nhấp vào nút "Nguyên" sẽ mở CSV trong trình duyệt.

Tôi hy vọng điều đó sẽ giúp.

|
4

Bạn chỉ nên làm điều đó với rawURL của tập tin của bạn.

Ví dụ: để tải xuống README của AFNetworking:

curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md 

Vì nó là một repo công khai nên bạn không cần bất kỳ thông tin xác thực nào. Xin lưu ý các loại url:raw.githubusercontent.com/path/to/file

|
3

Thay vì liên kết để tải xuống một tệp cụ thể trong repo, bạn nên sử dụng tính năng Phát hành của GitHub để liên kết dữ liệu có thể tải xuống (như tệp nhị phân được biên dịch) với phiên bản được gắn thẻ của mã nguồn được sử dụng để tạo dữ liệu đó.

https://github.com/blog/1547-release-your-software

Chúng tôi rất vui mừng thông báo Phát hành, một quy trình làm việc cho phần mềm vận chuyển đến người dùng cuối. Các bản phát hành là các đối tượng hạng nhất với các thay đổi và tài sản nhị phân thể hiện toàn bộ lịch sử dự án ngoài các tạo phẩm Git.

Các bản phát hành được kèm theo ghi chú phát hành và liên kết để tải xuống phần mềm hoặc mã nguồn.

Theo các quy ước của nhiều dự án Git, các bản phát hành được gắn với các thẻ Git. Bạn có thể sử dụng thẻ hiện có hoặc để các bản phát hành tạo thẻ khi nó được xuất bản.

|
3

Điều này chắc chắn sẽ làm việc. Ít nhất là trong Chrome. Nhấp chuột phải vào biểu tượng "Nguyên" -> Lưu Liên kết dưới dạng .

|
  • 1

    Điều này sẽ lưu tệp HTML của trang github, bao gồm trình bao bọc github xung quanh tệp.

    – Hồ Anh Duy 20:16:13 07/01/2016
  • 1

    @Gregor - FYI, Không nên, ít nhất là đối với các trang có văn bản. Nếu nghi ngờ, hãy nhấp vào biểu tượng "Nguyên". Điều này sẽ mở tệp văn bản trong trình duyệt, KHÔNG CÓ HTML nào. Bây giờ rt bấm vào bất cứ nơi nào trên trang và làm "Lưu dưới dạng ...". (Hoặc chọn Chọn tất cả / Sao chép, sau đó Dán bất cứ nơi nào bạn muốn)

    – Tạ Lam Bích 21:13:25 15/04/2017
2

Gần đây tôi đã tìm thấy một dịch vụ được gọi gitzipvà nó cũng là nguồn mở:

trang web - http://kinolien.github.io/gitzip/

repo - https://github.com/KinoLien/gitzip

Vist trang web trên, nhập URL repo hoặc thư mục, bạn có thể tải xuống các tệp riêng lẻ hoặc toàn bộ thư mục dưới dạng tệp zip.

|
  • 1

    Nhưng làm thế nào để tôi chỉ tải xuống jszip.min.jstừ kho lưu trữ đó? mặt troll

    – Hoàng Thiên Lương 18:16:10 22/06/2016
  • 1

    mở tệp trong github và sau đó đi đến raw. Bạn sẽ thấy mã nguồn của tệp và sau đó bạn có thể tải xuống bằng trình duyệt bằng chuột phải và lưu dưới dạng. Nó làm việc cho tôi.

    – Bùi Ngọc Uyên 20:18:25 11/07/2016
2
  1. Trang bạn liên kết để trả lời câu hỏi đầu tiên.

  2. GitHub cũng có một tiện ích tải xuống cho những thứ như bản phát hành.

  3. Google Code hoàn toàn không có Git .

  4. GitHub, Google Code và SourceForge , chỉ để bắt đầu, là lưu trữ miễn phí. SourceForge vẫn có thể làm CVS .

|
1

Để tải xuống tệp từ repo Github, hãy sử dụng lệnh 'curl' với liên kết đến tệp thô.

curl https://raw.githubusercontent.com/user/repo/filename --output filename

Thêm tùy chọn --output theo sau là tên tệp mới để tải xuống tệp thô vào tệp vừa tạo.

|
1

Bây giờ có thể tải xuống bất kỳ tệp hoặc bất kỳ thư mục cụ thể nào trong kho lưu trữ bằng cách sử dụng phần mở rộng Google chrome này:

GitZip cho github: link: https://chrom.google.com.vn/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn

Sử dụng :

  1. Trong bất kỳ trang repos nào của GitHub.
  2. Chỉ cần nhấp đúp chuột vào các mục bạn cần.
  3. Nhấp vào nút tải xuống ở dưới cùng bên phải.
  4. Xem bảng điều khiển tiến trình và chờ tải xuống kích hoạt trình duyệt.
  5. Lấy tập tin ZIP.

|
1

Nếu bạn tình cờ sử dụng curl và firefox ... bạn có thể sử dụng tiện ích bổ sung cliget để tạo cuộc gọi curl bao gồm tất cả các cơ chế xác thực (còn gọi là cookie).

Vì vậy, nhấp chuột phải vào rawnút cliget -> "sao chép url cho liên kết" và sau đó dán nó vào vỏ. Bạn sẽ nhận được tệp của mình ngay cả khi bạn phải đăng nhập để xem nó.

|
1

Tôi nghĩ rằng urlcấu trúc mới raw.giturlví dụ:

tập tin git

nguyên

|
0

Bạn có thể thử github-files-fetcher , đây là một công cụ dòng lệnh tải xuống một thư mục hoặc tệp từ repo GitHub.

Hãy suy nghĩ một kịch bản thực sự: bạn đã truy cập trang web sau đây và muốn tải xuống asyncthư mục con một mình.

https://github.com/reduxjs/redux/tree/master/examples

xin lỗi vì không được phép đăng hình ảnh

Với The github-files-fetcher, trước tiên bạn nên sao chép urltrang đó, đó là https://github.com/reduxjs/redux/tree/master/examples/async , sau đó chạy lệnh bên dưới trong dòng lệnh:

fetcher --url=https://github.com/reduxjs/redux/tree/master/examples/async

|
0

Tôi đã sử dụng định dạng sau và tôi cảm thấy việc thông báo về đường dẫn là rất quan trọng.

https://github.com/user/repository/raw/branch/filename

^^ ^ ở trên không hoàn chỉnh trong tâm trí của tôi

https://github.com/<user>/<repoROOTname>/blob/master/<path>/<filename>?raw=true

một số người nói raw.github.com hoặc raw thay vì blob, nhưng dòng thứ 2 hoạt động với tôi và tôi hy vọng sẽ giúp được những người khác ...

2

|
0

Hoặc thử cái này

const https = require('https');
const fs = require('fs');
const DOMAIN = 'raw.githubusercontent.com';

function writeFile(data, fileName) {
  fs.appendFile(fileName, data.toString(), err => {
    if (err) {
      console.log('error in writing file', err);
    }
  });
}

function EOF(data) {
  console.log('EOF');
}

function getFileName(pathToFile) {
  var result = pathToFile.split('/');
  var splitLength = result.length;
  return result[splitLength - 1];
}
function getFile(branchName, username, repoName, ...pathToFile) {
  pathToFile.forEach(item => {
    const path = `/${username}/${repoName}/${branchName}/${item}`;
    const URL = `${DOMAIN}${path}`;
    const options = {
      hostname: DOMAIN,
      path: path
    };
    var fileName = getFileName(item);

    https
      .get(options, function(res) {
        console.log(res.statusCode);
        /* if file not found */
        if (res.statusCode === 404) {
          console.log('FILE NOT FOUND');
        } else {
          /* if file found */
          res.on('data', data => writeFile(data, fileName));
          res.on('end', data => EOF(data));
        }
      })
      .on('error', function(res) {
        console.log('error in reading URL');
      });
  });
}
getFile('master', 'bansalAyush', 'InstagramClone', '.babelrc', 'README.md');
|
0

Đối với người dùng có GitHub Enterprise, bạn cần tạo URL theo sơ đồ sau

Invoke-WebRequest http://github.mycompany.com/api/v3/repos/my-org/my-repo/contents/myfiles/file.txt -Headers @{"Authorization"="token 8d795936d2c1b2806587719b9b6456bd16549ad8"}

Thông tin chi tiết có thể được tìm thấy ở đây

http://artisticcheese.blogspot.com/2017/04/how-to-doad-inderson-files-from.html

|
0
  1. Ở phía bên phải ngay bên dưới "Clone in Desktop" có ghi "Tải xuống tệp Zip"
  2. Tải xuống tập tin Zip
  3. Giải nén tập tin
|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.