**恐怖を抱くあなたへ贈る「Git Rebase」**

2026/01/08 4:03

**恐怖を抱くあなたへ贈る「Git Rebase」**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Summary

リベースはブランチの履歴を書き換えるため、個人用の機能ブランチでのみ使用し、作業を必ずバックアップしてください。

  1. まだ追加していない場合は upstream を追加:
    git remote add upstream https://github.com/OneBusAway/onebusaway-ios.git
  2. upstream から最新の変更を取得:
    git fetch upstream
  3. 安全のため現在の作業をフォークへプッシュ:
    git push origin <branch>
  4. upstream/main に対してリベース:
    git rebase upstream/main
  5. コンフリクトがあれば解消(コンフリクトマーカーを編集するか VS Code のマージ UI を使用)、各ファイルをステージ (
    git add …
    ) し、
    git rebase --continue
    で継続。
  6. 何か問題が起きたら
    git rebase --abort
    でリベース前の状態に戻す。
  7. リベース後は
    git log --oneline upstream/main..HEAD
    でコミットを確認し、テスト/ビルドを実行。
  8. 最後に 安全に強制プッシュ:
    git push --force-with-lease origin <branch>
    。共有ブランチ(例:
    main
    )への強制プッシュは避けてください。

これらの手順に従うことで、共有ブランチを安全に保ち、マージコンフリクトを減らし、個々の貢献者用機能ブランチをきれいに管理できます

本文

ハッカーニュースでの会話に参加しよう

複数の OneBusAway プロジェクトをメンテナンスしている立場から、私はよく貢献者にマージ前にブランチをリベースするよう依頼します。多くの場合、相手はためらいを示したり、恐怖心を露わにしたりします。そういう気持ちは分かります。リベースは作業を壊すという噂があり、オンライン上の警告もあまり役立ちません。

しかし実際に起こる最悪ケースは「ローカルクローンを削除してやり直す」だけです。それ以外は遠隔フォークとメインリポジトリは残っています。いつでも復旧できます。恐怖を払拭したら、ではリベースの手順を説明します。


なぜメンテナはリベースを求めるのか

main
からブランチを作成して数日間作業すると、
main
は進化し続けます。別の PR がマージされ、あなたの PR の準備が整う頃には、ブランチの履歴は
main
から分岐しています。マージコミットで統合することもできますが、その結果としてインタリーブされたコミットが混在した不揃いな履歴になり、何が変わったかを把握しにくくなります。

リベースはあなたのコミットを現在の

main
の上に再配置します。まるで今日ブランチを作成したように扱われます。その結果、クリーンで直線的な履歴が得られ、レビューやバグ追跡が格段に楽になります。


実際のコマンド

  1. アップストリーム(元リポジトリ)がリモートとして設定されているか確認
    フォークをクローンした場合は

    origin
    が自分のフォーク指し示しているだけです。

    git remote -v
    
  2. メインリポジトリが表示されない場合は追加

    git remote add upstream https://github.com/OneBusAway/onebusaway-ios.git
    
  3. アップストリームから最新の変更を取得

    git fetch upstream
    
  4. 自分の機能ブランチにいることを確認

    git checkout your-branch-name
    
  5. リベース前に現在の作業をフォークへプッシュ
    何か問題が起きたときに備えてバックアップです。

    git push origin your-branch-name
    
  6. アップストリームの

    main
    に対してリベース

    git rebase upstream/main
    

    コンフリクトが無ければ完了。コンフリクトがあれば Git が停止し、対象ファイルを教えてくれます。


コンフリクトマーカーの理解

競合したファイルを開くと次のような構造になります:

<<<<<<< HEAD
const timeout = 5000;
=======
const timeout = 10000;
>>>>>>> upstream/main
  • <<<<<<< HEAD
    =======
    の間は、再配置されるコミット側(自分)のコードです。
  • =======
    >>>>>>> upstream/main
    の間は、
    main
    側で衝突したコードです。

最終的に残すべきコードを決定し、マーカーを削除して残りのコードだけを残します。

VS Code では「Accept Current Change」「Accept Incoming Change」「Accept Both Changes」「Compare Changes」というボタンが表示されるため、手動でマーカーを探さなくても衝突を一つずつ解決できます。


コンフリクトが複雑な場合

  1. 単純ケース:同じ行を異なる内容に変更しただけ。どちらかを選ぶか合体させます。
  2. 難しいケース:複数コミットで同一ファイルが連続して衝突する場合、変更が互いに依存し、新しいベースに適用できないことがあります。

対処法:

  • Squash からリベース
    小さなコミットをまとめてロジカルなコミット数を減らします。
  • Abort & 別アプローチ
    git rebase --abort
    で中止し、必要なら
    main
    から新しいブランチを作り手動で変更を適用します。
  • rerere の活用
    同じ衝突を何度も解決する場合は再利用設定を有効にします。
git config --global rerere.enabled true

衝突を解決したら:

git add path/to/resolved/file
git rebase --continue

すべて完了するまで繰り返し、失敗した場合は

git rebase --abort
で元に戻ります。


変更の検証

リベース後、次を確認します:

git log --oneline upstream/main..HEAD

これで

main
より進んだ自分のコミットだけが表示されます。見た目が正しければビルドとテストを実行し、リベースにより潜在的な問題が生じていないか確認します。


強制プッシュ

リベース後はローカルブランチが遠隔ブランチから逸脱します。通常の

git push
は失敗するので:

git push --force-with-lease origin your-branch-name

--force-with-lease
は安全なオプションで、誰かが同時にプッシュしていれば失敗します。共有ブランチ(例:
main
)には絶対に強制プッシュしないでください。


それでもうまくいかなかったら

  1. 必要なら一時的なブランチへ作業をプッシュ
  2. ローカルクローンを削除
  3. フォークから再度クローン
  4. アップストリームリモートを追加
  5. リベースプロセスをやり直す

GitHub 上にコミットが残っている限り、いつでも復旧可能です。


もう一つの注意点

リベースはコミット履歴を書き換えます。これは自分だけが作業している機能ブランチなら問題ありません。しかし他人もそのブランチを基に作業している場合、リベースは避けるべきです。協力している場合は事前に連絡し、必要であればマージコミットを使う方が安全です。


以上です。リベースは「いつでも復旧できる」ことを理解すれば怖くありません。最悪ケースでは数分で再クローンするだけ。メリットはクリーンなプロジェクト履歴で、将来の保守やデバッグが楽になる点にあります。

同じ日のほかのニュース

一覧に戻る →

2026/01/14 5:45

**ゲームズ・ワークショップ、スタッフのAI使用を全面禁止 経営陣はテクノロジーに興味津々でない** - 同社は従業員が業務上人工知能ツールを利用することを一律で禁じる方針を採用しました。 - 経営層は知的財産の安全性や創造的コントロールへの影響を懸念していると述べています。 - 業界内では注目が集まっても、上級経営者はAIがデザイン・生産フローに与えるメリットに対し慎重な姿勢を保ち続けています。

## Japanese Translation: **改善された概要** Games Workshop は、コンテンツ制作と設計プロセスにおける生成型 AI ツールの使用を正式に禁止しました。この方針では、厳格な監視下で数名の上級マネージャーのみが AI を実験できるようになっていますが、その可能性についてはまだ誰も興奮していません。外部コンペティションへの参加を含む不正使用は禁止されており、企業はデータ準拠・セキュリティ・ガバナンスを監視し、AI/ML エンジンがデバイスに自動インストールされるのを防止する必要があります。 GW の禁止措置は知的財産権を保護し、人間クリエイターを尊重するとともに、上級スタッフによる限定的な調査を許可しています。この決定は、より広い文脈の中で行われました。GW は *Warhammer 40,000* や *Age of Sigmar* などのフラッグシップテーブルトップタイトルを所有し、高品質のコデックス本・ミニチュア・アニメーションを販売しており、最近は新規採用で Warhammer Studio を拡大しました。Displate の作品に関する最近の紛争―Displate がそのアートワークが AI によって生成されたと否定し、「赤旗」を人為的なミスに帰せたケース―は、ファンが生成型 AI アートに対して反発していることを示しています。特に Warhammer の美学に大きな影響力を持つアーティスト John Blanche の存在がその背景にあります。 今後も GW はデータ準拠とセキュリティの監視を継続します。上級マネージャーは AI の可能性を探るかもしれませんが、内部方針の変更や外部圧力が変わらない限り、広範な採用は見込めません。この禁止措置により GW は Genvid、EA、Square Enix など AI を積極的に導入している競合他社に比べて遅れを取ることになり、ゲーム開発の競争ダイナミクスが変わる可能性があります。これは生成型 AI の統合に対する業界全体の慎重な姿勢を反映しています。

2026/01/14 2:10

**チューリップ・クリエイティブ・コンピュータ** - 芸術と技術のユニークな融合 - 革新的なビジュアル体験を設計 - 鮮やかなカラーパレットと最先端ハードウェアを組み合わせる

## 日本語訳: **Tulip CC** は低電力で手頃な価格のセルフコンテインドポータブルコンピュータで、オープンソースの音楽ワークステーションとしても機能します。ESP32‑S3マイクロコントローラを中心に構築され、MicroPython を実行し、AMY ステレオ 120 ボイスシンセサイザーエンジン(加法/減法/F‑M 合成、サンプラー、Karplus–Strong、アナログフィルタ、シーケンサー、ドラムマシン、パッチエディタ)とキャパシティブ・マルチタッチ対応のタッチスクリーンディスプレイを備えています。 デバイスは 8.5 MB の RAM(MicroPython 用 2 MB、OS 用 1.5 MB、残りがグラフィックスフレームバッファ)と 32 MB のフラッシュ(うち 24 MB が使用可能)、Wi‑Fi、USB キーボード/マウス/MIDI、I²C/Grove/Mabee コネクタをセンサーや周辺機器用に搭載し、組み込みの pico/nano スタイルエディタ(構文ハイライトと REPL)も備えています。グラフィックスは LVGL によって処理されます:テキストフレームバッファ 128 × 50(ANSI 256 色)、スキャンラインあたり最大 32 スプライト(32 KB ビットマップメモリ)、1024 × 600 の背景フレームバッファでスクロール、PNG ローディング、デフォルト 30 FPS、解像度調整可能、256 色。 電力消費は 5 V で 575 mA(中程度の輝度)で、LiPo、18650、または USB バッテリーパックに対応しています。追加ソフトウェア機能として、ネイティブチャット/ファイル共有 BBS「TULIP ~ WORLD」、MIDI 入出力コールバック、およびクリエーションの共有用 Web バージョンがあります。 Tulip CC は市販ユニット、DIY ハードウェアキット、フル機能の Web アプリ、またはネイティブデスクトップアプリ(Mac/Linux/WSL)として入手可能です。開発リソース—完全な API ドキュメント、チュートリアル、Discord コミュニティ、およびオープンソース GitHub リポジトリ—が提供されており、埋め込みデバイスとデスクトップ環境の両方で動作するために貢献が必要です。将来のファームウェア更新では、合成モジュールの拡張、LVGL を介したグラフィックス解像度の向上、および電力効率の改善がコミュニティの入力を受けて行われる可能性があります。

2026/01/14 1:22

「二つの頭(=複数の視点)が一つより優れているのでしょうか?」

## Japanese Translation: ## 要約 コイントスの結果を時折だけ報告する人々がいる場合、報告者数が奇数であると予測精度が向上し、さらに1人追加して偶数にすると追加効果は得られないという点が主旨です。 シミュレーションと解析的な検証から次のように示されています:正直な友人(80 % 正解率)を1人だけ持つ場合、2人目を加えても精度は80 %のままであり、合意しても不一致が相殺されるため利益がありません。3人目が参加すると精度は90 %に上昇し、4人目が加わると再び90 %に戻ります。このパターンは奇数回報者ごとに繰り返されます。 この発見はコンドルセートの陪審理論を反映しており、偶数規模のグループでは多数決が引き分けになる可能性があるため、新たな情報を提供しないことを説明しています。著者は、創造的執筆プロジェクトを開催するプログラミングリトリート「Recurse Center」でベッティングシミュレーションを実行している際にこの現象に気付きました。 今後の研究では、この傾向がより複雑な投票設定や大規模グループでも維持されるかどうかを検証することが期待されます。グループサイズと偶奇性が意思決定品質に与える影響を理解することで、クラウドソーシングサイト、陪審制度、または人間の判断を集約するあらゆるプラットフォームの設計者が、不必要な偶数参加者を追加しないよう助けることができます。

**恐怖を抱くあなたへ贈る「Git Rebase」** | そっか~ニュース