Bagaimana cara saya melakukan push awal ke repositori jarak jauh dengan Git?


173

Saya telah membaca tutorial yang tak terhitung jumlahnya dan saya terus berdiskusi. Inilah yang saya punya:

- Saya menjalankan RubyMine di desktop Windows saya
- Saya telah menginstal Git di akun hosting WebFaction saya sesuai instruksi mereka
- Git tampaknya berfungsi dengan baik di kedua mesin

Inilah yang saya lakukan:
1. Di server:
         a. proyek mkdir
         b. git init
         c. git add.
         d. git commit <--- "nothing to commit"
2. Pada klien:
         a. Buat proyek baru di RubyMine.
         b. "git init" di direktori teratas proyek
         c. "Dorong perubahan" ke server <---- "gagal mendorong beberapa referensi ke ...".

Langkah apa yang saya lewatkan?

Jawaban:


393

Di server:

mkdir my_project.git
cd my_project.git
git --bare init

Pada klien:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

Perhatikan bahwa saat Anda menambahkan asal, ada beberapa format dan skema yang bisa Anda gunakan. Saya sarankan Anda melihat apa yang disediakan layanan hosting Anda.


Satu-satunya hal yang saya ubah, karena saya sedang mengerjakan RubyMine, adalah saya mengganti touch .gitignore dengan membuat proyek rails dengan 66 file defaultnya. Terima kasih banyak!
Donald Hughes

Kudos untuk daftar perintah. Ini adalah bagaimana saya mengatur repositori jarak jauh juga.
Dave Bacher

5
Saya harus menambahkan bahwa jika Anda ingin orang lain berkolaborasi dengan Anda dalam repo ini, Anda harus menambahkan --shareddi akhir git --bare initperintah. Ini akan mengatur izin yang diperlukan.
Josh Lindsey

Terima kasih atas jawaban ini. Sangat membantu untuk memiliki hal-hal seperti ini yang mengisi hal-hal yang hilang dalam buku-buku git yang sangat bagus, tetapi masih belum mencakup banyak karya konversi dari CVS.
octopusgrabbus

21
Saya suka lari git push --set-upstream origin masterbukan git push origin masteryang pertama kali. Ini memungkinkan saya untuk mengetik git pushatau git pullbukan git push origin mastersetiap waktu. Apa pun yang sesuai dengan preferensi Anda.
Rick Smith

8

Anda dapat mencoba ini:

di Server:

menambahkan grup baru untuk /etc/groupdisukai (contoh)

mygroup:1001:michael,nir

buat repositori git baru:

mkdir /srv/git
cd /srv/git
mkdir project_dir
cd project_dir
git --bare init (initial git repository )
chgrp -R mygroup objects/ refs/ (change owner of directory )
chmod -R g+w objects/ refs/ (give permission write)

pada Klien:

mkdir my_project
cd my_project
touch .gitignore
git init
git add .
git commit -m "Initial commit"
git remote add origin youruser@yourserver.com:/path/to/my_project.git
git push origin master

(Terima kasih Josh Lindsey untuk sisi klien)

setelah Klien, lakukan di Server perintah ini:

cd /srv/git/project_dir
chmod -R g+w objects/ refs/

Jika mendapat kesalahan ini setelah git pull:

There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details

git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream new origin/<branch>

mencoba:

git push -u origin master

Itu akan membantu.


5

Anda harus menambahkan setidaknya satu file ke repositori sebelum melakukan, mis .gitignore.


Saya kira cara saya mencoba menggunakannya adalah dengan menambahkan file awalnya dari klien saya, karena di situlah saya menulis kode. Apakah itu secara konseptual tidak pada tempatnya di git? Apakah saya harus melakukan komitmen pada klien terlebih dahulu dan kemudian mendorong ke server?
Donald Hughes

5

Jika proyek Anda tidak memiliki cabang upstream, itu adalah jika ini adalah pertama kalinya repositori jarak jauh akan tahu tentang cabang yang dibuat di repositori lokal Anda, perintah berikut ini akan berfungsi.

git push --set-upstream origin <branch-name>

3

@ Jos Lindsey sudah menjawab dengan sangat baik. Tetapi saya ingin menambahkan beberapa informasi karena saya sering menggunakan ssh.

Karena itu ubah saja:

git remote add origin youruser@yourserver.com:/path/to/my_project.git

untuk:

git remote add origin ssh://youruser@yourserver.com/path/to/my_project

Perhatikan bahwa titik dua antara domain dan jalur sudah tidak ada lagi.


1

Anda perlu mengatur repositori jarak jauh pada klien Anda:

git remote add origin ssh://myserver.com/path/to/project

Saya menjalankan perintah itu, tetapi "master asal git push" masih menghasilkan "gagal mendorong beberapa referensi". Saya mencoba melakukan "git pull origin master" dan menerima "tidak dapat menemukan master ref jarak jauh".
Donald Hughes

Saya tidak yakin apakah itu membuat perbedaan, tetapi repositori jarak jauh saya dibuat dengan git --bare initseperti yang direkomendasikan oleh @Josh Lindsey.
Dave Bacher

saya memiliki masalah yang sama "gagal mendorong beberapa referensi" ... mencoba mendorong cabang master dari repo ke yang saya buat ... maka saya perhatikan sumbernya tidak memiliki cabang master - pastikan cabang yang Anda coba untuk mendorong ada :)
Datum Geek
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.