Makrosum ekibinin kod paylasim ve versiyon kontrol rehberi.
GitLab adresimiz: git.makrosum.com
GitLab'da projeler su yapida tutuluyor:
Makrosum (Ana Grup)
└── proje-adi (Alt Grup)
├── frontend (Repo)
├── backend (Repo)
└── api (Repo)
Ornek: "E-Ticaret" projesi icin:
makrosum/e-ticaret/frontend
makrosum/e-ticaret/backend
makrosum/e-ticaret/api
SSH key'in zaten GitLab'a eklendi. Git ayarlarin da hazir. Kontrol etmek icin:
# SSH baglantisi test et
ssh -T [email protected]
# Git ayarlarini kontrol et
git config --global user.name
git config --global user.email
proje-olustur
Bu komut sana sorular sorar ve her seyi otomatik yapar:
Eger komutu kullanmak istemiyorsan, elle su adimlari takip et:
# 1. GitLab'dan repoyu klonla
git clone [email protected]:makrosum/proje-adi/backend.git
# 2. Klasore gir
cd backend
# 3. Kodunu yaz, sonra asagidaki "Push Yapma" bolumune bak
cd ~/projeler/proje-adi/backend
git pull origin main
KURAL: Asla direkt main branch'e push yapma!
# Branch isimlendirme kurali: tip/kisa-aciklama
git checkout -b feature/kullanici-girisi
git checkout -b fix/sepet-hatasi
git checkout -b update/anasayfa-tasarim
Branch tipleri:
| Tip | Ne zaman |
|---|---|
feature/ |
Yeni ozellik eklerken |
fix/ |
Hata duzeltirken |
update/ |
Mevcut ozelligi guncellerken |
hotfix/ |
Acil duzeltme |
# Degisiklikleri gozden gecir
git status
git diff
# Dosyalari ekle
git add .
# VEYA sadece belirli dosyalari ekle (onerilen)
git add src/components/Login.vue
git add src/api/auth.js
# Commit yaz
git commit -m "feat: kullanici giris ekrani eklendi"
Commit mesaji kurallari:
| Tur | Aciklama | Ornek |
|---|---|---|
feat: |
Yeni ozellik | feat: urun arama eklendi |
fix: |
Hata duzeltme | fix: sepet toplami yanlis hesaplaniyordu |
update: |
Guncelleme | update: anasayfa banner degistirildi |
refactor: |
Kod duzenleme | refactor: auth servisi yeniden yazildi |
docs: |
Dokuman | docs: API kullanim rehberi eklendi |
style: |
Stil degisikligi | style: buton renkleri guncellendi |
# Ilk push (branch'i remote'a gonder)
git push -u origin feature/kullanici-girisi
# Sonraki pushlar
git push
Push yaptiktan sonra GitLab'da otomatik bir bildirim cikar:
"Create merge request" linkine tikla.
Veya terminalden:
# Push ciktisinda verilen linke tikla
# Ya da GitLab'a git > Merge Requests > New Merge Request
MR'da:
Reviewer onayladiktan sonra "Merge" butonuna tikla.
Branch otomatik silinir (ayarlanabilir).
# Durumu gor
git status
# Degisiklikleri gor
git diff
# Log gor (son 10 commit)
git log --oneline -10
# Branch listesi
git branch # lokal
git branch -r # remote
# Branch degistir
git checkout main
git checkout feature/benim-isim
# Yeni branch olustur ve gecis yap
git checkout -b feature/yeni-ozellik
# Guncel kodu cek
git pull origin main
# Push yap
git push origin branch-adi
Eger git pull yaptiginda catisma olursa:
# 1. Catismayi gor
git status
# "both modified" yazan dosyalara bak
# 2. Dosyayi ac, catisma isaretlerini bul
# <<<<<<< HEAD
# senin kodun
# =======
# diger kisi nin kodu
# >>>>>>> branch-adi
# 3. Dogru versiyonu sec, isaretleri sil
# 4. Dosyayi kaydet ve commit et
git add .
git commit -m "fix: catisma cozuldu"
# Son commit'i geri al (dosyalar korunur)
git reset --soft HEAD~1
# Dosyadaki degisiklikleri geri al (DIKKAT: kaybolur!)
git checkout -- dosya-adi.js
Her repo su yapida olusturulur:
frontend/
├── src/
│ ├── components/ # Tekrar kullanilabilir parcalar
│ ├── pages/ # Sayfa bilesenleri
│ ├── assets/ # Resimler, fontlar
│ └── utils/ # Yardimci fonksiyonlar
├── public/
├── package.json
└── .gitignore
backend/
├── src/
│ ├── controllers/ # İstek isleyicileri
│ ├── models/ # Veritabani modelleri
│ ├── routes/ # URL yonlendirmeleri
│ ├── middleware/ # Ara katmanlar (auth vs.)
│ ├── config/ # Yapilandirma
│ └── utils/ # Yardimci fonksiyonlar
├── package.json
└── .gitignore
api/
├── src/
│ ├── routes/ # API endpoint tanimlari
│ ├── middleware/ # Auth, rate-limit vs.
│ ├── validators/ # Girdi dogrulama
│ ├── services/ # Is mantigi
│ └── config/ # Yapilandirma
├── package.json
└── .gitignore
main branch'e push yapma - her zaman branch ac.gitignore kullan (node_modules, .env, vs.)Sorun yasarsan: