Back to Skills

rebase-workflow

verified

rebase を用いてリモートのデフォルトブランチの変更を作業ブランチに取り込む

View on GitHub

Marketplace

natsuume-plugins

natsuume/natsuume-cc-marketplace

Plugin

git-guardrails

Repository

natsuume/natsuume-cc-marketplace

plugins/git-guardrails/skills/rebase-workflow/SKILL.md

Last Verified

January 21, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/natsuume/natsuume-cc-marketplace/blob/main/plugins/git-guardrails/skills/rebase-workflow/SKILL.md -a claude-code --skill rebase-workflow

Installation paths:

Claude
.claude/skills/rebase-workflow/
Powered by add-skill CLI

Instructions

# Rebase Workflow

リモートのデフォルトブランチの変更を、rebase を使って安全に作業ブランチに取り込む手順です。

## 前提条件

- 作業ブランチで作業中であること(デフォルトブランチではないこと)
- コミットしていない変更がないこと(`git status` で確認)

## 手順

### 1. デフォルトブランチ名の取得

デフォルトブランチ名はリポジトリによって異なります(master, main, develop など)。以下のコマンドで動的に取得します:

```bash
git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@'
```

取得できない場合は、以下で設定できます:

```bash
git remote set-head origin --auto
```

### 2. リモートの変更を取得

```bash
git fetch origin
```

### 3. rebase で変更を取り込む

```bash
git rebase origin/<default-branch>
```

例(デフォルトブランチが master の場合):

```bash
git rebase origin/master
```

### 4. コンフリクト発生時の対処

rebase 中にコンフリクトが発生した場合:

1. **状況確認**
   ```bash
   git status
   ```
   コンフリクトしているファイルが表示されます。

2. **コンフリクトを解決**
   - 各ファイルを開き、`<<<<<<<`, `=======`, `>>>>>>>` マーカーを探す
   - 適切な内容に修正
   - 修正後、ステージに追加:
     ```bash
     git add <file>
     ```

3. **rebase を継続**
   ```bash
   git rebase --continue
   ```

4. **rebase を中止する場合(元の状態に戻す)**
   ```bash
   git rebase --abort
   ```

### 5. リモートへの push

rebase 後は履歴が書き換わるため、通常の `git push` は失敗します。
`--force-with-lease` を使って安全に push します:

```bash
git push --force-with-lease
```

> **注意**: `--force-with-lease` は、他の誰かがリモートブランチに push した場合に失敗します。
> これにより、他人の変更を誤って上書きすることを防げます。
> 単なる `--force` は絶対に使用しないでください。

## 一連のコマンド例

```bash
# デフォルトブランチ名を取得
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')

# リモートの変更を取得
git fetch origin

# rebase で取り込み
git rebase origin/$DEFAULT_BRANCH

# リモートへ push(必要な場合)
git push --force-with-lease
```

## トラブルシューティング

### デフォルトブランチ名が取得できない

```bash
# リモートの HEAD を自動設定
git remote set-head origin --auto

# 再度取得を試みる
git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'
```

### rebase 中に大量のコンフリクトが発生

小さな単位で rebase を行うか、`git rebase --abort` で中止してマージを検討してください。

### push が拒否された

`--force-with-lease` が失敗する場合、他の誰かがリモートブランチを更新しています。
再度 `git fetch` して状況を確認してください。

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
1842 chars