Git push / clone ke server baru

127

Saya baru belajar Git dan ada sesuatu yang tidak bisa saya lakukan. Setelah membuat dan menggunakan repositori git secara lokal di Mac saya, bisakah saya mendorong salinan ke server lain di tempat lain? Saya berada di belakang firewall jadi sayangnya saya tidak bisa lari git clonedari komputer lain.

Yakub
sumber

Jawaban:

137
  1. git remote add nama url
  2. git push nama cabang

Contoh:

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

Lihat dokumen untuk git push- Anda dapat mengatur remote sebagai remote default untuk cabang yang diberikan; jika tidak, namanya originspesial. Hanya git pushseorang diri akan melakukan hal yang sama dengan git push origin cabang ini (untuk cabang apa pun Anda berada).

hobbs
sumber
7
Untuk efek yang lebih dekat sebagai "push cloning" daripada hanya pushinh a _branch_ : git push -u --allkita dapat menghilangkan originkarena itu adalah nama default untuk mendorong dan -ujuga akan melacak cabang-cabang jarak jauh.
cregox
13
Seharusnya cukup untuk membuat repositori kosong kosong di server menggunakan git init --bare /foo/bar.gitdan kemudian mendorong lokal Anda di sana (seperti dalam jawaban ini). Anda tidak perlu mentransfer apa pun dengan zip / tared ke server.
OderWat
1
Seconding OderWat. Sebagai contoh, lakukan 'git init --bare foo / bar.git' saat login ke remote (yaitu [email protected]) maka 'remote origin' akan memiliki tujuan untuk mendorong. Sebagai contoh github, saya pikir Anda bisa menggunakan antarmuka web Repositori / Tambah github dan kemudian ikuti saran "Dorong repositori yang ada dari baris perintah" yang disediakannya. Github menyarankan '-u' untuk menyebabkan referensi pelacakan.
Dave X
Metode ini mungkin kanonik, tetapi itu tumpul dan membuat git kurang dapat digunakan. Saya suka saya beberapa git, tapi Tuhan memang punya beberapa masalah UI ..
Ross Rogers
Saya mengambil kebebasan untuk menghapus paragraf "EDIT" yang ditambahkan ke pertanyaan awal, yang membuatnya tampak seperti prosedur ini dipertanyakan. Saya tidak berpikir begitu, dan mungkin seharusnya itu adalah komentar alih-alih suntingan pertanyaan.
Agustus Lilleaas
75

Apa yang mungkin ingin Anda lakukan adalah pertama-tama, pada mesin lokal Anda, buat tiruan kosong dari repositori

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

Sekarang, arsipkan direktori repo.git baru menggunakan tar / gzip atau apa pun alat pengarsipan favorit Anda dan kemudian salin arsip ke server.

Batalkan penguraian repo di server Anda. Anda kemudian perlu mengatur remote di repositori lokal Anda:

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

Anda kemudian dapat mendorong ke dan menarik dari repo jarak jauh dengan:

git push repo-name branch-name
git pull repo-name branch-name
Grant Limberg
sumber
4
Bisakah Anda menjelaskan komentar "jangan lupa .git!"? Di mana gunanya menambahkan .git ke akhir folder? Kapan saya harus melakukan ini? Hanya konvensi?
lumbric
5
".Git" hanyalah standar tidak resmi untuk mengidentifikasi repo telanjang
Grant Limberg
3
Saya tidak mengikuti ide ini ... bukankah ini mematahkan seluruh tujuan pengaturan server git dan benar - benar menggunakannya untuk "mentransfer / menyalin / menyimpan sesuatu dalam sinkronisasi / cadangan" daripada membuat zip dan menggunakan beberapa metode lain?
cregox
1
Ini persis apa yang saya butuhkan, karena repo asli berada di jaringan yang tidak memiliki akses ke jaringan di mana server saya ingin mendorong ada. Ini memungkinkan saya untuk meletakkan repo di kotak yang memang memiliki akses.
michaeltwofish
3
@Cawas Anda hanya perlu menyalin / menyalin / mengekstrak repo secara manual sekali. setelah itu yang Anda butuhkan hanyalah git push and pull.
sparebytes
9

Ada banyak cara untuk memindahkan repositori, git bundleadalah cara yang baik jika Anda memiliki ketersediaan jaringan yang tidak mencukupi. Karena repositori Git sebenarnya hanyalah direktori yang penuh dengan file, Anda dapat "mengkloning" repositori dengan membuat salinan .gitdirektori dengan cara apa pun yang paling sesuai untuk Anda.

Cara paling efisien adalah dengan menggunakan repositori eksternal di suatu tempat (gunakan GitHub atau atur Gitosis ), lalu git push.

Greg Hewgill
sumber
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
jazzed
sumber
Saya suka kesederhanaan jawaban Anda, tetapi saya tidak yakin apakah itu yang saya butuhkan atau tidak. Saya memiliki repo GIT yang ada di GitHub, dan sekarang juga ingin mendorong ke file langsung server Ubuntu kami (yang telah menginstal GIT). Bisakah Anda menambahkan beberapa komentar untuk membuat proses lebih jelas?
Dave Everitt
1

Anda dapat mendorong cabang ke server jauh, katakan github . Pertama-tama Anda harus melakukan pengaturan proyek awal, kemudian mengkloning proyek Anda dan:

git push <remote repo> <your branch>
Cesar
sumber