AgentSkillsCN

git_workflow

分支策略、提交规范、合并冲突解决和Git最佳实践指南。

SKILL.md
--- frontmatter
name: git_workflow
router_kit: FullStackKit
description: Branch stratejisi, commit conventions, merge conflict çözümü ve Git best practices rehberi.
metadata:
  skillport:
    category: development
    tags: [architecture, automation, best practices, clean code, coding, collaboration, compliance, debugging, design patterns, development, documentation, efficiency, git, git workflow, optimization, productivity, programming, project management, quality assurance, refactoring, software engineering, standards, testing, utilities, version control, workflow]      - workflow

🌿 Git Workflow

Branch stratejisi, commit conventions ve Git best practices rehberi.


📋 İçindekiler

  1. Branching Stratejileri
  2. Commit Conventions
  3. Merge vs Rebase
  4. Conflict Resolution
  5. Useful Commands

1. Branching Stratejileri

Git Flow

code
main (production)
  └── develop
        ├── feature/user-auth
        ├── feature/payment
        └── release/v1.2.0
              └── hotfix/critical-bug

GitHub Flow (Önerilen - Basit)

code
main (always deployable)
  ├── feature/add-login
  ├── fix/button-style
  └── chore/update-deps

Branch Naming

bash
# Feature
feature/user-authentication
feature/JIRA-123-add-payment

# Bug Fix
fix/login-redirect-issue
bugfix/memory-leak

# Hotfix (production)
hotfix/critical-security-patch

# Other
chore/update-dependencies
refactor/auth-module
docs/api-documentation

2. Commit Conventions

Conventional Commits

code
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

Types

TypeAçıklama
featYeni özellik
fixBug düzeltme
docsDokümantasyon
styleFormatting (kod değişikliği yok)
refactorRefactoring
perfPerformans iyileştirme
testTest ekleme/düzeltme
choreBuild, CI, dependencies
ciCI configuration
revertRevert commit

Örnekler

bash
feat(auth): add OAuth2 login support

fix(api): resolve null pointer in user endpoint
Closes #123

refactor!: drop support for Node 14
BREAKING CHANGE: Minimum Node version is now 18

chore(deps): update lodash to 4.17.21

Commit Message Rules

code
✅ DOĞRU:
- Imperative mood: "Add feature" (not "Added" or "Adds")
- 50 karakter başlık limiti
- Büyük harfle başla, nokta koyma
- Açıklayıcı body (neden, nasıl)

❌ YANLIŞ:
- "Fixed stuff"
- "WIP"
- "asdfasdf"
- "Updated code"

3. Merge vs Rebase

Merge

bash
# Feature branch'i main'e merge
git checkout main
git merge feature/user-auth

# Merge commit oluşturur
# History korunur

Rebase

bash
# Feature branch'i main üzerine rebase
git checkout feature/user-auth
git rebase main

# Linear history
# Commit'ler yeniden yazılır

Ne Zaman Hangisi?

DurumStrateji
Public/shared branchMerge
Local feature branchRebase
Main'e feature mergeSquash merge
HotfixMerge

Squash Merge

bash
git checkout main
git merge --squash feature/user-auth
git commit -m "feat(auth): add user authentication"

4. Conflict Resolution

Conflict Markers

code
<<<<<<< HEAD
Current branch content
=======
Incoming branch content
>>>>>>> feature-branch

Resolution Steps

bash
# 1. Conflict'leri gör
git status

# 2. Dosyaları düzenle (markers kaldır)

# 3. Çözümlenmiş dosyaları stage
git add <resolved-file>

# 4. Merge/rebase devam
git merge --continue
# veya
git rebase --continue

VS Code ile

bash
# Accept Current Change
# Accept Incoming Change
# Accept Both Changes
# Compare Changes

Abort

bash
git merge --abort
git rebase --abort

5. Useful Commands

History

bash
# Güzel log
git log --oneline --graph --all

# Son 10 commit
git log -10 --oneline

# Dosya history
git log --follow -p -- path/to/file

Undo

bash
# Son commit'i geri al (değişiklikleri koru)
git reset --soft HEAD~1

# Son commit'i tamamen geri al
git reset --hard HEAD~1

# Commit'i revert et (yeni commit oluştur)
git revert <commit-hash>

# Staged dosyayı unstage
git restore --staged <file>

# Değişiklikleri geri al
git restore <file>

Stash

bash
# Değişiklikleri sakla
git stash

# Mesajla sakla
git stash push -m "WIP: feature X"

# Stash listesi
git stash list

# Son stash'i uygula
git stash pop

# Belirli stash'i uygula
git stash apply stash@{2}

Interactive Rebase

bash
# Son 3 commit'i düzenle
git rebase -i HEAD~3

# Açılan editörde:
pick abc1234 First commit
squash def5678 Second commit  # Öncekiyle birleştir
reword ghi9012 Third commit   # Mesajı değiştir

Cherry Pick

bash
# Belirli commit'i al
git cherry-pick <commit-hash>

# Birden fazla
git cherry-pick <hash1> <hash2>

Git Workflow v1.1 - Enhanced

🔄 Workflow

Kaynak: Atlassian Git Workflows & Trunk Based Development

Aşama 1: Branching

  • Strategy: Çoğu ekip için "Trunk Based Development" (kısa ömürlü feature branch'ler) kullan.
  • Naming: feat/ fix/ ön eklerini standartlaştır.
  • Lifetime: Branch ömrü 2 günü geçmemeli. Geçiyorsa parçala.

Aşama 2: Committing

  • Atomic: Bir commit sadece bir şeyi değiştirmeli.
  • Message: feat(auth): add login formatını (Conventional Commits) zorunlu tut.
  • Verification: pre-commit hook ile linter/test çalıştır.

Aşama 3: Merging

  • Review: Code Owner onayı olmadan merge etme.
  • Method: Geçmişi temiz tutmak için Squash Merge tercih et.
  • Cleanup: Merge sonrası branch'i sil.

Kontrol Noktaları

AşamaDoğrulama
1Main branch her an deploy edilebilir (Green) durumda mı?
2git log --oneline okunduğunda bir hikaye anlatıyor mu?
3Conflict çözülürken kod kaybı yaşanma riski var mı?