Saya 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 ...
> git init --bare /path/to/bare/repo.git
Initialised empty Git repository in /path/to/bare/repo.git/
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
git clone /path/to/bare/repo.git /path/to/work
Cloning into '/path/to/work'...
warning: You appear to have cloned an empty repository.
done.
Perintah ini hanya akan berfungsi jika /path/to/worktidak ada atau folder kosong. Perhatikan peringatan - pada tahap ini, Anda masih belum memiliki sesuatu yang berguna. Jika Anda cd /path/to/workdan lari git status, Anda akan mendapatkan sesuatu seperti:
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
tapi ini bohong. Anda tidak benar-benar di cabang master(karena git branchtidak 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.
> cd /path/to/work
> echo 123 > afile.txt
> git add .
> git config --local user.name adelphus
> git config --local user.email adelphus@example.com
> git commit -m "added afile"
[master (root-commit) 614ab02] added afile
1 file changed, 1 insertion(+)
create mode 100644 afile.txt
The git configperintah hanya diperlukan jika Anda belum sudah bilang git siapa Anda. Perhatikan bahwa jika sekarang Anda menjalankan git branch, Anda sekarang akan melihat mastercabang terdaftar. Sekarang jalankan git status:
On branch master
Your branch is based on 'origin/master', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
nothing to commit, working directory clean
Ini juga menyesatkan - hulu belum "hilang", hanya saja belum dibuat dan git branch --unset-upstreamtidak akan membantu. Tapi tidak apa-apa, sekarang kita memiliki komit pertama kita, kita bisa mendorong dan master akan dibuat di repo telanjang.
> git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /path/to/bare/repo.git
* [new branch] master -> master
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.
> git pull
Already up-to-date.
> git push origin master
Everything up-to-date
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.
> cd /path/to/work_with_stuff
> git init
Initialised empty Git repository in /path/to/work_with_stuff
> git add .
# add git config stuff if needed
> git commit -m "added stuff"
[master (root-commit) 614ab02] added stuff
20 files changed, 1431 insertions(+)
create mode 100644 stuff.txt
...
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.
> git remote add origin /path/to/bare/repo.git
> git push -u origin master
Counting objects: 31, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (31/31), done.
Writing objects: 100% (31/31), 43.23 KiB | 0 bytes/s, done.
Total 31 (delta 11), reused 0 (delta 0)
To /path/to/bare/repo.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
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.
--sharedopsi untukinitjika Anda berencana meminta orang lain mendorong repo ini. Secara otomatis menambahkan izin menulis grup ke repositori - tautan