Sao chép nội dung của kho lưu trữ GitHub (không có thư mục)


232

Tôi muốn git clonenội dung của một kho lưu trữ tôi có trên GitHub . Khi tôi git clone(git @ github: me / name.git ...) tôi nhận được một thư mục được gọi name/và tên bên trong Tôi có nội dung của mình ... Làm cách nào để tôi CHỈ CÓ nội dung?



Để thực sự bỏ qua việc tải xuống các đối tượng không cần thiết để tiết kiệm tài nguyên mạng: stackoverflow.com/questions/600079/ trên
Ciro Santilli 冠状 病

Câu trả lời:


313

Nếu thư mục hiện tại trống, bạn có thể làm điều đó với:

git clone git@github:me/name.git .

(Lưu ý .ở cuối để chỉ định thư mục hiện tại.) Tất nhiên, điều này cũng tạo .gitthư mục trong thư mục hiện tại của bạn, không chỉ mã nguồn từ dự án của bạn.

[directory]Tham số tùy chọn này được ghi lại trong git clonetrang thủ công , chỉ ra rằng nhân bản vào một thư mục hiện có chỉ được phép nếu thư mục đó trống.


2
Thật không may, điều này không hoạt động nếu có các thư mục khác, không liên quan đã có trong cùng một thư mục. Tìm kiếm một giải pháp. Thông báo lỗi là: "gây tử vong: đường dẫn đích '.' đã tồn tại ... "
John Little

12
Thư mục git nhái vào phải trống
jolyonruss

1
@HumaunRashid Thêm một .như đã thảo luận trong câu trả lời : git clone https://github.com/humaun21/Test .. Và có, git@github.me/name.gitlà một giữ chỗ cho bất cứ địa chỉ git repo thực tế của bạn là gì.
Aaron Campbell

1
@JohnLittle Có cùng một vấn đề, hóa ra có một tệp .DS_Store ẩn, ẩn ở đó. Đơn giản rm .DS_Storevà bạn tốt để đi.
Selrond

1
Nếu bạn đang làm việc trên hệ điều hành linux, bạn cần chắc chắn thư mục trống bao gồm kiểm tra các tệp và thư mục con ẩn. Bạn có thể làm điều đó với ls -a. Bạn chỉ nên có. và .. là đầu ra. Điều này sẽ không hoạt động khác
Ayo Makanjuola

156

Thật không may, điều này không hoạt động nếu có các thư mục khác, không liên quan đã có trong cùng một thư mục. Tìm kiếm một giải pháp. Thông báo lỗi là: "gây tử vong: đường dẫn đích '.' đã tồn tại...".

Giải pháp trong trường hợp này là:

git init
git remote add origin git@github.com:me/name.git
git pull origin master

Công thức này hoạt động ngay cả khi có các thư mục khác trong thư mục bạn muốn kiểm tra.


Xin chào, tôi nhận được một lỗi như Quyền bị từ chối <khóa công khai>. Cái kết gây nên sự bất ngờ lớn.
Stan

Nó không nên github.comở đó sau git remote ..., và không chỉ github?
Amn

5
Câu trả lời này nên được chấp nhận một. hoạt động hoàn hảo.
vikramvi

Tôi đã đọc ở đây rằng bạn cần phải chạy git fetch --alltrước git pull origin master, bởi vì nếu có các nhánh khác trên repo, git pullsẽ không nhận được những thứ đó trừ khi bạn sử dụng fetchtrước. Điều này có đúng không?
Alex G

38

Nếu thư mục không trống, phiên bản sửa đổi một chút của câu trả lời của @ JohnLittle đã hoạt động với tôi:

git init
git remote add origin https://github.com/me/name.git
git pull origin master

Như @ peter-cordes đã chỉ ra, sự khác biệt duy nhất là sử dụng giao thức https thay vì git, mà bạn cần phải cấu hình các khóa SSH .


Phiên bản nào của git bạn đang chạy? Điều này đã không làm việc cho tôi. Nó vẫn không cho phép tôi thiết lập vì thư mục không trống
guribe94

@ guribe94 git phiên bản 2.5.0
Tomáš Zemanovič

3
Đây là câu trả lời tương tự, chỉ sử dụng https ẩn danh thay vì giao thức git qua ssh (yêu cầu tài khoản github với thiết lập khóa ssh được thiết lập).
Peter Cordes

15

Bạn có thể chỉ định thư mục đích là tham số thứ hai của git clone lệnh, vì vậy bạn có thể làm:

git clone <remote> .

Điều này sẽ sao chép kho lưu trữ trực tiếp trong thư mục địa phương hiện tại.


2

để sao chép git repo vào thư mục hiện tạitrống (không git init) và nếu bạn không sử dụng ssh:

git clone https://github.com/accountName/repoName.git .

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.