2013-09-30 22 views
54

Tôi có một thư mục gitrepo1. Thư mục này là một kho lưu trữ git.Làm thế nào để di chuyển một kho lưu trữ git vào một thư mục khác và đặt thư mục đó thành kho lưu trữ git?

  • tôi muốn di chuyển này gitrepo1 vào một thư mục newrepo.

  • newrepo nên là kho git mới mà không làm giảm của lịch sử git và nên chứa thư mục gitrepo1

  • gitrepo1 nên chỉ là một directorty bây giờ (bên newrepo), mà không bất kỳ. git index. I E. nó KHÔNG còn là kho lưu trữ git độc lập hay một mô-đun con.

Tôi làm cách nào để thực hiện việc này?

+6

'mv girepo1 newrepo' ?? – sircapsalot

Trả lời

65

Rất đơn giản. Git không quan tâm đến tên thư mục của nó là gì. Nó chỉ quan tâm những gì bên trong. Vì vậy, bạn có thể chỉ cần thực hiện:

# copy the directory into newrepo dir that exists already (else create it) 
$ cp -r gitrepo1 newrepo 

# remove .git from old repo to delete all history and anything git from it 
$ rm -rf gitrepo1/.git 

Lưu ý rằng bản sao này khá đắt nếu kho chứa lớn và có lịch sử lâu dài. Bạn có thể tránh nó một cách dễ dàng quá:

# move the directory instead 
$ mv gitrepo1 newrepo 

# make a copy of the latest version 
# Either: 
$ mkdir gitrepo1; cp -r newrepo/* gitrepo1/ # doesn't copy .gitignore (and other hidden files) 

# Or: 
$ git clone --depth 1 newrepo gitrepo1; rm -rf gitrepo1/.git 

# Or (look further here: http://stackoverflow.com/q/1209999/912144) 
$ git archive --format=tar --remote=<repository URL> HEAD | tar xf - 

Một khi bạn tạo newrepo, điểm đến để đưa gitrepo1 có thể là bất cứ nơi nào, ngay cả bên trong newrepo nếu bạn muốn nó. Nó không thay đổi thủ tục, chỉ là con đường bạn đang viết gitrepo1 trở lại.

+3

+1. Nó có thể đáng nhắc đến [this gotcha] (http://stackoverflow.com/a/17747571/761202) ảnh hưởng đến các kho được tạo bằng git version 1.7.8 hoặc 1.7.9 - có nghĩa là di chuyển một repo git làm cho nó không sử dụng được (mặc dù cho biết nó dễ dàng sửa chữa). – AD7six

+0

@ AD7six, cảm ơn liên kết – Shahbaz

+1

tôi đang sử dụng máy rút tiền và sử dụng dấu nhắc lệnh. tôi không thể tìm thấy lệnh "cp". lệnh "cp" cụ thể cho hệ điều hành khác là gì? – LP13

Các vấn đề liên quan