Git đẩy / sao chép vào máy chủ mới


127

Tôi chỉ đang học Git và có một vài thứ tôi không thể làm được. Sau khi tạo và sử dụng kho git cục bộ trên máy Mac, tôi có thể đẩy một bản sao sang máy chủ khác ở nơi khác không? Tôi đứng sau một tường lửa nên rất tiếc tôi không thể chạy git clonetừ máy khác.

Câu trả lời:


137
  1. git remote add tên url
  2. git push tên chi nhánh

Thí dụ:

git remote add origin git@github.com:foo/bar.git
git push origin master

Xem tài liệu cho git push- bạn có thể đặt điều khiển từ xa làm điều khiển từ xa mặc định cho một nhánh nhất định; nếu bạn không, cái tên originthật đặc biệt Chỉ git pushmột mình sẽ làm tương tự như git push origin thisbranch (cho bất kỳ chi nhánh nào bạn đang ở).


7
Để có hiệu ứng gần hơn như là "nhân bản đẩy" thay vì chỉ đẩy một _branch_ : git push -u --allchúng ta có thể bỏ qua originvì đó là tên giả định mặc định để đẩy và -ucũng sẽ theo dõi các nhánh từ xa.
cregox

13
Nó là đủ để tạo ra một kho lưu trữ trống rỗng tại máy chủ bằng cách sử dụng git init --bare /foo/bar.gitvà sau đó đẩy kho lưu trữ cục bộ 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ì có zip / tared sang máy chủ.
OderWat

1
Phân biệt OderWat. Ví dụ: thực hiện 'git init --bare foo / bar.git' trong khi đăng nhập vào điều khiển từ xa (ví dụ: git@github.com) thì 'nguồn gốc từ xa' sẽ có đích đến để đẩy vào. Đối với ví dụ về github, tôi nghĩ rằng bạn có thể sử dụng giao diện Kho lưu trữ / Thêm web của github và sau đó làm theo lời khuyên "Đẩy kho lưu trữ hiện có từ dòng lệnh" mà nó cung cấp. Github khuyên '-u' để tạo tham chiếu theo dõi.
Dave X

Phương pháp này có thể là kinh điển, nhưng nó gây khó chịu và làm cho git ít sử dụng hơn. Tôi yêu tôi một số git, nhưng trời tốt, nó có một số vấn đề về giao diện người dùng ..
Ross Rogers

Tôi đã tự do loại bỏ đoạn "EDIT" đã được thêm vào câu hỏi ban đầu, điều đó làm cho nó có vẻ như thủ tục này là nghi vấn. Tôi không nghĩ là như vậy, và có lẽ nó nên là một bình luận thay vì chỉnh sửa câu hỏi.
Tháng 8 Lilleaas ngày

75

Những gì bạn có thể muốn làm là trước tiên, trên máy cục bộ của bạn, tạo một bản sao trần của kho lưu trữ

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

Bây giờ, lưu trữ thư mục repo.git mới bằng tar / gzip hoặc bất kỳ công cụ lưu trữ yêu thích nào của bạn và sau đó sao chép tệ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 thiết lập một điều khiển từ xa trên kho lưu trữ cục bộ của bạn:

git remote add repo-name user@host:/path/to/repo.git #this assumes you're using SSH

Sau đó, bạn sẽ có thể đẩy đến và kéo từ repo từ xa bằng:

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 trong việc 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 thôi?
thắt lưng

5
".Git" chỉ là tiêu chuẩn không chính thức để xác định repo git trần
Grant Limberg

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

1
Đây chính xác là những gì tôi cần, bởi vì repo ban đầu nằm trên một mạng không có quyền truy cập vào mạng nơi máy chủ tôi muốn đẩy để tồn tại. Điều này cho phép tôi đặt repo trên một hộp có quyền truy cập.
michaeltwofish

3
@Cawas bạn chỉ phải tự nén / sao chép / trích xuất repo một lần. sau đó tất cả những gì bạn cần là git đẩy và kéo.
sparebytes

9

Có nhiều cách để di chuyển kho lưu trữ xung quanh, git bundlelà 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 chứa đầy các tệp, bạn có thể "sao chép" kho lưu trữ bằng cách tạo một bản sao của .gitthư mục 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.


7
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://ec2-user@<hostorip>:/home/ec2-user/dev/test
local> git push aws master

Tôi thích sự đơn giản trong câu trả lời của bạn, nhưng tôi không chắc đó có phải là thứ tôi cần hay không. Tôi có một repo GIT hiện có trên GitHub và hiện tại tôi cũng muốn chuyển sang các tệp trực tiếp máy chủ Ubuntu của chúng tôi (đã cài đặt GIT). Bạn có thể thêm một số ý kiến ​​để làm cho quá trình rõ ràng hơn?
Dave Everitt

1

Bạn có thể đẩy một nhánh đến một máy chủ từ xa, nói github . Trước tiên, bạn sẽ phải thực hiện 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>
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.