Skip to main content

git-environment

Create development environments with git worktrees, branches, commits, and push to remote. Auto-applies for git workflow tasks.

소스 정보

저장소
openshift/hypershift
최근 소스 활동
2026년 2월 9일 11:12
감지된 SKILL.md 언어
영어
스타
546
포크
578

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
Git Environment
description
Create development environments with git worktrees, branches, commits, and push to remote. Auto-applies for git workflow tasks.
# Git Development Environment Workflow Automates common git development workflows for HyperShift including worktree creation, branching, committing (with proper format), and pushing to remotes. ## Configuration Load environment variables from `dev/claude-env.sh`: ```bash source dev/claude-env.sh ``` ### Environment Variables | Variable | Default | Description | |----------|---------|-------------| | `GIT_FORK_REMOTE` | `enxebre` | Your fork remote name | | `GIT_UPSTREAM_REMOTE` | `origin` | Upstream remote (openshift/hypershift) | | `GIT_BASE_BRANCH` | `main` | Base branch for new features | ## Workflows ### Create New Development Environment **With worktree (parallel development):** ```bash # Fetch latest git fetch $GIT_UPSTREAM_REMOTE $GIT_BASE_BRANCH # Create worktree with new branch git worktree add -b <branch-name> <worktree-path> $GIT_UPSTREAM_REMOTE/$GIT_BASE_BRANCH # Example: git worktree add -b feat/privatelink-karpenter ../hs-privatelink $GIT_UPSTREAM_REMOTE/$GIT_BASE_BRANCH ``` **Without worktree (same repo):** ```bash # Fetch latest git fetch $GIT_UPSTREAM_REMOTE $GIT_BASE_BRANCH # Create and checkout new branch git checkout -b <branch-name> $GIT_UPSTREAM_REMOTE/$GIT_BASE_BRANCH # Example: git checkout -b fix/bug-123 $GIT_UPSTREAM_REMOTE/$GIT_BASE_BRANCH ``` ### Branch Naming Conventions Use conventional prefixes: - `feat/<description>` - New features - `fix/<description>` - Bug fixes - `docs/<description>` - Documentation - `refactor/<description>` - Code refactoring - `test/<description>` - Test additions - `chore/<description>` - Maintenance tasks ### Commit Changes **Always follow the git-commit-format skill for commits.** 1. **Stage changes:** ```bash git add <specific-files> ``` 2. **Check what's staged:** ```bash git status git diff --cached ``` 3. **Commit with proper format:** ```bash git commit -m "$(cat <<'EOF' <type>(<scope>): <description> [optional body] Signed-off-by: <name> <email> Commit-Message-Assisted-by: Claude (via Claude Code) EOF )" ``` 4. **Validate commit message:** ```bash make run-gitlint ``` ### Push to Remote **First push (set upstream):** ```bash git push -u $GIT_FORK_REMOTE <branch-name> ``` **Subsequent pushes:** ```bash git push ``` **Force push (after rebase):** ```bash # Always use --force-with-lease for safety git push --force-with-lease ``` ### Sync with Upstream ```bash # Fetch latest from upstream git fetch $GIT_UPSTREAM_REMOTE $GIT_BASE_BRANCH # Rebase current branch on base branch git rebase $GIT_UPSTREAM_REMOTE/$GIT_BASE_BRANCH # If conflicts, resolve them, then: git rebase --continue # Push updated branch (force required after rebase) git push --force-with-lease ``` ### Cleanup Worktree ```bash # Remove the worktree git worktree remove <worktree-path> # Optionally delete the branch git branch -D <branch-name> # Prune stale worktree references git worktree prune ``` ### List Worktrees ```bash git worktree list ``` ## Quick Reference Commands | Task | Command | |------|---------| | New worktree + branch | `git worktree add -b <branch> <path> $GIT_UPSTREAM_REMOTE/$GIT_BASE_BRANCH` | | New branch (no worktree) | `git checkout -b <branch> $GIT_UPSTREAM_REMOTE/$GIT_BASE_BRANCH` | | Stage all changes | `git add -A` | | Stage specific files | `git add <file1> <file2>` | | Check status | `git status` | | View staged diff | `git diff --cached` | | Commit | `git commit -m "<message>"` | | Validate commit | `make run-gitlint` | | Push (first time) | `git push -u $GIT_FORK_REMOTE <branch>` | | Push | `git push` | | Force push (safe) | `git push --force-with-lease` | | Sync with upstream | `git fetch $GIT_UPSTREAM_REMOTE $GIT_BASE_BRANCH && git rebase $GIT_UPSTREAM_REMOTE/$GIT_BASE_BRANCH` | | Remove worktree | `git worktree remove <path>` | | Delete branch | `git branch -D <branch>` | | List worktrees | `git worktree list` | ## Example Full Workflow ```bash # 0. Load environment source dev/claude-env.sh # 1. Create new feature environment git fetch $GIT_UPSTREAM_REMOTE $GIT_BASE_BRANCH git worktree add -b feat/aws-privatelink-subnets ../hs-privatelink $GIT_UPSTREAM_REMOTE/$GIT_BASE_BRANCH cd ../hs-privatelink # 2. Make changes... # ... edit files ... # 3. Stage and commit git add -A git commit -m "$(cat <<'EOF' feat(aws): add dynamic subnet discovery for privatelink Implement subnet discovery from Karpenter EC2NodeClass resources to ensure PrivateLink VPC Endpoints have ENIs in all required availability zones. Signed-off-by: Alberto Garcia <agarcia@redhat.com> Commit-Message-Assisted-by: Claude (via Claude Code) EOF )" # 4. Validate make run-gitlint # 5. Push to fork git push -u $GIT_FORK_REMOTE feat/aws-privatelink-subnets # 6. Create PR via gh cli gh pr create --title "feat(aws): add dynamic subnet discovery for privatelink" --body "..." # 7. After PR merged, cleanup cd ../hypershift git worktree remove ../hs-privatelink git branch -D feat/aws-privatelink-subnets ``` ## Notes - Always use `--force-with-lease` instead of `--force` for safety - Worktrees allow parallel development on multiple features - Each worktree shares the same git repository but has its own working directory - Run `git remote -v` to verify remote configuration - Configure your fork remote in `dev/claude-env.sh` by setting `GIT_FORK_REMOTE`
GitHub에서 보기