2011-09-08 41 views
6

Trên một máy sản xuất, tôi muốn kiểm tra một tập tin cụ thể tại một phiên bản cụ thể từ GitHub để tạo thuận lợi cho việc di chuyển cơ sở dữ liệu. Tôi không muốn kiểm tra (hoặc thậm chí nhân bản) toàn bộ kho mã nguồn (vì đây là môi trường sản xuất của tôi). Làm thế nào tôi có thể kéo tập tin tôi đang tìm?Làm cách nào để kiểm tra một tệp từ GitHub mà không cần sao chép toàn bộ kho lưu trữ?

+2

Đã giải quyết chắc chắn: http://stackoverflow.com/questions/610208/how-to-retrieve-a-single-file-from-specific -revision-in-git http://stackoverflow.com/questions/692246/how-do-i-revert-one-file-to-the-last-commit-in-git http://stackoverflow.com/question/6580641/how-to-checkout-a-single-file-in-git http://stackoverflow.com/questions/1125476/git-retrieve-a-single-file-from-a-repository – fuzzyalej

+1

Tất cả của những điều trên hầu như không liên quan, ngoại trừ http://stackoverflow.com/questions/1125476/git-retrieve-a-single-file-from-a-repository, nhưng tiếc là bạn không thể sử dụng '' --remote = '' với GitHub (http://groups.google.com/group/github/browse_thread/thread/cfcbcb1dc5f41f16). –

Trả lời

3

Theo như tôi có thể biết, việc tải xuống một tệp từ kho lưu trữ git được phân phát qua http hiện không thể thực hiện được. Tôi tin rằng GitHub có một tính năng "tải xuống" riêng biệt mà họ muốn mọi người sử dụng thay vào đó (nhưng tôi không biết liệu nó có hỗ trợ tải xuống một tệp đơn lẻ hay không).

Cách khắc phục là sao chép toàn bộ kho lưu trữ (!) Và sau đó kéo tệp quan tâm. Dưới đây là một chức năng bash mà không được công việc:

git-cat() { 
    if [ -z "$1" -o -z "$2" ]; then 
     echo "Usage: git-cat REPO_URL FILE [BRANCH]" 
     exit 1 
    fi 
    tmprepo=`mktemp -d -t gitrepo.XXXXXX` 
    reponame=$1 
    filename=$2 
    branchname=$3 
    if [ -z "$branchname" ]; then 
     branchname="master" 
    fi 
    git clone -nq $reponame $tmprepo && 
    git --git-dir $tmprepo/.git show ${branchname}:${filename} && 
    rm -rf $tmprepo 
} 
8

Tôi làm điều này với cho xương sống như vậy

curl -O https://raw.github.com/documentcloud/backbone/master/backbone-min.js 
1

Giải pháp của tôi là như thế nào trong bài viết đầu tiên. Nhưng tôi cố gắng giải thích thêm một chút. Có nút "Nguyên bản" trên GitHub cho mọi tệp - nó sẽ chỉ hiển thị văn bản thuần trong trình duyệt. Ngoài ra, bạn có thể sử dụng url đó.

Ví dụ, tôi có repo https://github.com/MasterSergius/conf_files.git Và tôi muốn để có được file vimrc tôi, vì vậy ở đây liên kết đến tập tin của tôi: https://raw.githubusercontent.com/MasterSergius/conf_files/master/.vimrc tôi nghĩ, rằng bằng mẫu này, bạn thậm chí có thể đoán url tập tin bằng cách repo và tệp tên đầy đủ. Vì vậy, bây giờ tôi có thể tải nó với curl:

curl https://raw.githubusercontent.com/MasterSergius/conf_files/master/.vimrc -o ~/.vimrc 
Các vấn đề liên quan