Git ile uzak bir depoya ilk defa nasıl basabilirim?


173

Ben sayısız öğreticiler okudum ve ben kısa geliyor. İşte sahip olduğum şeyler:

- Windows masaüstümde
RubyMine kullanıyorum - Git'i talimatlarına göre WebFaction barındırma hesabıma yükledim
- Git her iki makinede de iyi çalışıyor gibi görünüyor

Yaptığım şey:
1. Sunucuda:
         a. mkdir projesi
         b. git init
         c. git ekleyin.
         d. git commit <--- "taahhüt edilecek hiçbir şey yok"
2. Müşteri:
         a. RubyMine'de yeni bir proje oluşturun.
         b. projenin üst dizinindeki "git init"
         c. "Değişiklikleri" <---- "sunucusuna aktar, bazı referansları ...

Hangi adımları kaçırıyorum?

Yanıtlar:


393

Sunucuda:

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

İstemcide:

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

Başlangıç ​​noktasını eklediğinizde, kullanabileceğiniz birkaç biçim ve şema olduğunu unutmayın. Hosting hizmetinizin neler sağladığını görmenizi tavsiye ederim.


RubyMine dışında çalıştığım için değiştirdiğim tek şey, .gitignore dokunuşunu 66 varsayılan dosyasıyla bir raylar projesi oluşturmayla değiştirmem. Çok teşekkür ederim!
Donald Hughes

Komutları listelemek için şeref. Ben de uzak depoları bu şekilde kurdum.
Dave Bacher

5
Bu repoda başkalarının sizinle işbirliği yapmasını istiyorsanız --shared, git --bare initkomutun sonuna eklemeniz gerektiğini de eklemeliyim . Bu, gerekli izinleri ayarlayacaktır.
Josh Lindsey

Bu cevap için teşekkürler. Git'te çok iyi kitaplar olan eksik şeyleri dolduran bu tür şeylere sahip olmak çok yararlıdır, ancak yine de CVS'den çok fazla dönüşüm çalışması kapsamaz.
octopusgrabbus

21
İlk defa git push --set-upstream origin masterkoşmaktan hoşlanıyorum git push origin master. Bu bana sadece yazabildiği git pushveya git pullyerine git push origin masterher zaman. Tercihlerinize uyan her şey.
Rick Smith

8

Bunu deneyebilirsiniz:

Sunucuda:

/etc/groupbeğenmek için yeni grup ekleme (örnek)

mygroup:1001:michael,nir

yeni git havuzu oluştur:

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)

İstemcide:

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

(Müşteri tarafı için Josh Lindsey'e teşekkürler)

İstemciden sonra Sunucuda şu komutları yapın:

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

Git çekme işleminden sonra bu hatayı aldıysanız:

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>

Deneyin:

git push -u origin master

Yardımı olacaktır.


5

Taahhüt etmeden önce depoya en az bir dosya eklemelisiniz , örn .gitignore.


Kod kullanmaya başladığımdan beri kullanmaya çalıştığım yolun istemcimdeki dosyaları eklemektir. Git'te kavramsal olarak yerinde değil mi? Önce istemciyi taahhüt edip sunucuya aktarmam gerekir mi?
Donald Hughes

5

Projenizin yukarı akışlı bir dalı yoksa, uzak deponun yerel deponuzda oluşturulan şube hakkında ilk kez bilecek olması durumunda, aşağıdaki komutun çalışması gerekir.

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

3

Josh Lindsey zaten gayet iyi cevap verdi. Ancak ssh kullandığım için bazı bilgiler eklemek istiyorum.

Bu nedenle sadece değiştirin:

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

için:

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

Etki alanı ve yol arasındaki iki nokta üst üste işaretinin artık mevcut olmadığını unutmayın.


1

İstemcinizde uzak depoyu ayarlamanız gerekir:

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

Bu komutu çalıştırdım, ancak "git push origin master" hala "bazı ref'leri itemedi" ile sonuçlanıyor. Bir "git pull origin master" yapmayı denedim ve "uzaktan ref master bulamadı" aldım.
Donald Hughes

Bir fark git --bare inityaratıp yaratmadığından emin değilim, ancak uzak depolarım @Josh Lindsey'in önerdiği gibi oluşturuldu .
Dave Bacher

Ben aynı sorunu vardı "bazı refs itmek başarısız oldu ... ... ana dalı yarattığım bir repo itmeye çalışıyor ... sonra ben kaynak bir ana dalı olmadığını fark - çalıştığınız şube emin olun itmek için var :)
Datum Geek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.