Saya perlu membuat repositori Git pusat tapi saya agak bingung ...
Saya telah membuat repositori kosong (di server git saya, mesin 2) dengan:
$ mkdir test_repo
$ git --bare init
Sekarang saya perlu mendorong file dari repositori lokal saya (mesin 1) ke repositori kosong (mesin 2). Saya memiliki akses ke mesin 2 oleh SSH. Masalahnya adalah saya pikir saya tidak mengerti konsep repositori telanjang ...
Apa cara yang tepat untuk menyimpan kode saya di repositori kosong? Bagaimana saya bisa mendorong perubahan dari repositori lokal saya ke repositori kosong?
Apakah cara yang tepat untuk memiliki repositori pusat untuk memiliki repositori kosong?
Saya agak bingung dengan subjek ini. Tolong beri saya petunjuk tentang ini.
--shared
opsi untukinit
jika Anda berencana meminta orang lain mendorong repo ini. Secara otomatis menambahkan izin menulis grup ke repositori - tautanSaya menambahkan jawaban ini karena setelah tiba di sini (dengan pertanyaan yang sama), tidak ada jawaban yang benar-benar menggambarkan semua langkah yang diperlukan untuk beralih dari yang tidak ada menjadi repo (telanjang) yang sepenuhnya dapat digunakan.
Catatan: contoh ini menggunakan lintasan lokal untuk lokasi bare repo, tetapi protokol git lainnya (seperti SSH yang ditunjukkan oleh OP) akan berfungsi dengan baik.
Saya sudah mencoba menambahkan beberapa catatan untuk mereka yang kurang terbiasa dengan git.
1. Menginisialisasi repo ...
Ini membuat folder (repo.git) dan mengisinya dengan file git yang mewakili repo git. Seperti berdiri, repo ini tidak berguna - tidak memiliki komitmen dan yang lebih penting, tidak ada cabang . Meskipun Anda dapat mengkloning repo ini, Anda tidak dapat menariknya.
Selanjutnya, kita perlu membuat folder yang berfungsi. Ada beberapa cara untuk melakukan ini, tergantung pada apakah Anda memiliki file yang ada.
2a. Buat folder kerja baru (tidak ada file yang ada) dengan mengkloning repo kosong
Perintah ini hanya akan berfungsi jika
/path/to/work
tidak ada atau folder kosong. Perhatikan peringatan - pada tahap ini, Anda masih belum memiliki sesuatu yang berguna. Jika Andacd /path/to/work
dan larigit status
, Anda akan mendapatkan sesuatu seperti:tapi ini bohong. Anda tidak benar-benar di cabang
master
(karenagit branch
tidak mengembalikan apa-apa) dan sejauh ini, tidak ada komitmen.Selanjutnya, salin / pindahkan / buat beberapa file di folder yang berfungsi, tambahkan ke git dan buat komit pertama.
The
git config
perintah hanya diperlukan jika Anda belum sudah bilang git siapa Anda. Perhatikan bahwa jika sekarang Anda menjalankangit branch
, Anda sekarang akan melihatmaster
cabang terdaftar. Sekarang jalankangit status
:Ini juga menyesatkan - hulu belum "hilang", hanya saja belum dibuat dan
git branch --unset-upstream
tidak akan membantu. Tapi tidak apa-apa, sekarang kita memiliki komit pertama kita, kita bisa mendorong dan master akan dibuat di repo telanjang.Pada titik ini, kami memiliki repo telanjang yang berfungsi penuh yang dapat dikloning di tempat lain pada cabang master dan juga copy pekerjaan lokal yang dapat menarik dan mendorong.
2b. Membuat folder yang berfungsi dari file yang ada Jika Anda sudah memiliki folder dengan file di dalamnya (jadi Anda tidak dapat mengkloningnya), Anda dapat menginisialisasi git repo baru, tambahkan komit pertama dan kemudian tautkan ke bare repo sesudahnya.
Pada titik ini kami memiliki komit pertama kami dan cabang master lokal yang kami perlukan untuk berubah menjadi cabang hulu yang dilacak dari jarak jauh.
Perhatikan
-u
flag on git push untuk mengatur cabang upstream (baru) yang dilacak. Sama seperti sebelumnya, kami sekarang memiliki repo telanjang yang berfungsi penuh yang dapat dikloning di tempat lain pada cabang utama serta copy pekerjaan lokal yang dapat menarik dan mendorong.Semua ini mungkin tampak jelas bagi sebagian orang, tetapi git membingungkan saya pada saat-saat terbaik (pesan kesalahan dan statusnya benar-benar membutuhkan pengerjaan ulang) - mudah-mudahan, ini akan membantu orang lain.
sumber
Menjawab pertanyaan Anda satu per satu:
Repositori kosong adalah yang tidak memiliki struktur pohon . Ini berarti seluruh isinya adalah apa yang Anda miliki dalam
.git
direktori.Anda hanya dapat membuka
commit
repositori denganpush
memasukkannya dari klon lokal Anda. Tidak memiliki struktur pohon, jadi tidak ada file yang dimodifikasi, tidak ada perubahan.Untuk memiliki repositori sentral, satu-satunya cara adalah dengan memiliki
bare
repositori.sumber
Anda juga dapat meminta git untuk membuat direktori untuk Anda:
sumber
Praktik umum adalah memiliki repositori pusat yang Anda dorong sebagai repo kosong.
Jika Anda memiliki latar belakang SVN, Anda dapat menghubungkan repo SVN ke repo telanjang Git. Itu tidak memiliki file dalam repo dalam bentuk aslinya. Sedangkan repo lokal Anda akan memiliki file yang membentuk "kode" Anda sebagai tambahan.
Anda perlu menambahkan remote ke repo telanjang dari repo lokal Anda dan mendorong "kode" Anda ke sana.
Itu akan menjadi sesuatu seperti:
sumber
git remote add central <url>
, dalam kasus SSH apakah ini termasuk jalan juga? mis.git remote add central ssh://user@server/home/user/repo.git
Ini harus cukup:
Lihat untuk lebih jelasnya " GIT: Bagaimana cara memperbarui bare repo saya? ".
Catatan:
origin
' untuk referensi jarak jauh repo kosong.git push --tags origin
untuk itu.sumber
Sangat menyenangkan untuk memverifikasi bahwa kode yang Anda dorong benar-benar dilakukan.
Anda bisa mendapatkan log perubahan pada repositori kosong dengan secara eksplisit mengatur path menggunakan opsi --relative.
Ini akan menunjukkan kepada Anda perubahan yang dilakukan seolah-olah ini adalah repo git biasa.
sumber
Berdasarkan jawaban Mark Longair & Roboprog:
jika git versi> = 1.8
Atau :
jika versi git <1.8
sumber
Bendera --bare membuat repositori yang tidak memiliki direktori yang berfungsi. Repositori kosong adalah repositori pusat dan Anda tidak dapat mengedit kode (toko) di sini untuk menghindari kesalahan penggabungan.
Misalnya, ketika Anda menambahkan file di repositori lokal Anda (mesin 1) dan mendorongnya ke repositori telanjang, Anda tidak bisa melihat file di repositori telanjang karena selalu kosong. Namun, Anda benar-benar mendorong sesuatu ke repositori dan Anda dapat melihatnya secara tidak jelas dengan mengkloning repositori lain di server Anda (mesin 2).
Repositori lokal di mesin 1 dan repositori 'salin' di mesin 2 tidak kosong. hubungan antara repositori telanjang dan non-telanjang
Blog akan membantu Anda memahaminya. https://www.atlassian.com/git/tutorials/setting-up-a-repository
sumber
Anda dapat menjalankan perintah berikut untuk menginisialisasi repositori lokal Anda
Anda harus mengerjakan proyek Anda dari repositori lokal dan menggunakan server sebagai repositori pusat.
Anda juga bisa mengikuti artikel ini yang menjelaskan masing-masing dan setiap aspek membuat dan memelihara repositori Git. Git untuk Pemula
sumber