2009-09-09 41 views
120

Im chỉ học git và có điều gì đó tôi không thể làm việc ra ngoài. Sau khi tạo và sử dụng kho lưu trữ git cục bộ trên máy Mac của tôi, tôi có thể đẩy bản sao đến máy chủ khác ở một nơi khác không? Tôi đứng đằng sau một bức tường lửa nên tiếc là tôi không thể chạy git clone từ máy khác.git push/clone vào máy chủ mới

Trả lời

124
  1. git remote addtênurl
  2. git pushtênchi nhánh

Ví dụ :

git remote add origin [email protected]:foo/bar.git 
git push origin master 

Xem tài liệu cho git push - bạn có thể đặt từ xa làm điều khiển từ xa mặc định cho một nhánh cụ thể; nếu không, tên origin là đặc biệt. Chỉ cần git push một mình sẽ thực hiện giống như git push originthisbranch (đối với bất kỳ nhánh nào bạn đang sử dụng).

+6

Đối với một chặt chẽ hơn có hiệu lực như một ** "nhân bản đẩy" ** thay vì chỉ * pushinh a _branch_ *: ['git push -u --all'] (http://linux.die.net/man/1/git-push) chúng ta có thể bỏ qua 'origin' vì nó là tên giả định mặc định để đẩy và' -u' cũng sẽ theo dõi các nhánh từ xa. – cregox

+9

Nó sẽ là đủ để tạo một kho trống rỗng tại máy chủ bằng cách sử dụng 'git init --bare/foo/bar.git' và sau đó đẩy một địa phương của bạn ở đó (như trong câu trả lời này). Bạn không cần phải chuyển bất cứ thứ gì với nén/tared đến máy chủ. – OderWat

+1

Thứ hai OderWat. Ví dụ: hãy thực hiện 'git init --bare foo/bar.git' khi đăng nhập vào điều khiển từ xa (ví dụ: [email protected]) thì 'nguồn gốc từ xa' sẽ có đích đến để đẩy vào.Đối với ví dụ về github, tôi nghĩ bạn có thể sử dụng giao diện web Repository/Add của github và sau đó làm theo lời khuyên "Đẩy kho lưu trữ hiện tại từ dòng lệnh" mà nó cung cấp. Github khuyên một '-u' gây ra một tham chiếu theo dõi. –

1

Bạn có thể đẩy chi nhánh đến máy chủ từ xa, nói github. Trước tiên, bạn sẽ phải làm việc thiết lập dự án ban đầu, sau đó sao chép dự án của bạn và:

git push <remote repo> <your branch> 
9

Có nhiều cách để di chuyển kho lưu trữ xung quanh, git bundle là một cách hay nếu bạn không có đủ mạng. Vì kho lưu trữ Git thực sự chỉ là một thư mục đầy đủ các tệp, bạn có thể "sao chép" một kho lưu trữ bằng cách tạo một bản sao của thư mục .git theo bất kỳ cách nào phù hợp với bạn nhất.

Cách hiệu quả nhất là sử dụng kho lưu trữ bên ngoài ở đâu đó (sử dụng GitHub hoặc thiết lập Gitosis), sau đó git push.

74

Những gì bạn có thể muốn làm là lần đầu tiên, trên máy tính địa phương của bạn, thực hiện một clone trần của kho

git clone --bare /path/to/repo /path/to/bare/repo.git # don't forget the .git! 

Bây giờ, lưu trữ lên thư mục repo.git mới sử dụng tar/gzip hoặc bất cứ điều gì mà bạn yêu thích công cụ lưu trữ là và sau đó sao chép lưu trữ vào máy chủ.

Hủy lưu trữ repo trên máy chủ của bạn. Sau đó bạn sẽ cần phải thiết lập một từ xa trên kho lưu trữ địa phương của bạn:

git remote add repo-name [email protected]:/path/to/repo.git #this assumes you're using SSH 

Sau đó bạn sẽ có thể push to và kéo từ repo từ xa với:

git push repo-name branch-name 
git pull repo-name branch-name 
+4

Bạn có thể giải thích nhận xét "đừng quên .git!"? Đâu là điểm để thêm .git vào cuối thư mục? Khi nào tôi nên làm điều này? Một quy ước chỉ? – lumbric

+5

".git" chỉ là tiêu chuẩn không chính thức để xác định một repo git trần –

+3

Tôi không theo ý tưởng này ... điều này không phá vỡ toàn bộ mục đích thiết lập một máy chủ git và thực sự * sử dụng nó * để " chuyển/sao chép/giữ mọi thứ trong đồng bộ/sao lưu "thay vì * nén * và sử dụng một số phương pháp khác? – cregox

4
remote server> cd /home/ec2-user 
remote server> git init --bare --shared test 
add ssh pub key to remote server 
local> git remote add aws ssh://[email protected]<hostorip>:/home/ec2-user/dev/test 
local> git push aws master 
Các vấn đề liên quan