git rebaseって超便利じゃね?
Gitでとても便利だと思っているのが、rebaseというコマンド。
ブランチを切った時点からオリジナルは刻一刻と変化していくわけで、
自分のブランチはあくまで現在最新のオリジナルに対するパッチである
必要がある場合は、このrebaseというコマンドを使って、オリジナル(HEAD)と
マージすると、最新のオリジナル(HEAD)に対して、ブランチを切ったことになります。
これチョー便利じゃね?
以下、git-rebaseから引用
git-rebase を使用して一連のパッチを最新に保つ リモート追跡ブランチ "origin" の上にブランチ "mywork" を作成し、幾つかコミットを作成したとします: $ git checkout -b mywork origin $ vi file.txt $ git commit $ vi otherfile.txt $ git commit ... mywork にマージをしていないので、変更は "origin" から単純に並行に行なわれています。 o--o--o <-- origin \ o--o--o <-- mywork プロジェクトの上流では他の興味深い変更が行なわれ、 "origin" は発展します: o--o--O--o--o--o <-- origin \ a--b--c <-- mywork この時点で、"pull" を使用して変更をマージさせることができます; 結果として新しいマージコミットが生成されます、次のようにです: o--o--O--o--o--o <-- origin \ \ a--b--c--m <-- mywork しかし、自分の履歴をマージ操作の無い、単純な一連のコミットの状態で保ちたいのであれば、 その代わりに git-rebase(1) を使用すると良いでしょう。 $ git checkout mywork $ git rebase origin これは、mywork からあなたの各コミットを削除し、一時的に (".dotest" という名前のディレクトリ内に)パッチとして保存し、 mywork を origin の最新バージョンの位置に更新し、その後で保存した各パッチを新しい mywork ブランチに適用します。結果は次のようになります: o--o--O--o--o--o <-- origin \ a'--b'--c' <-- mywork この作業中にコンフリクトが発生するかもしれません。 その場合はコンフリクトを解決してください; コンフリクトを解消した後に "git add" を使用してそれらの内容で索引を更新し、 git-commit を実行する代わりに、 $ git rebase --continue を実行します。すると、残りのパッチを適用する作業が続けられます。 どの時点でも —abort オプションを使用すると、この作業を取り消し、 rebase を開始する前の mywork の状態に戻ることができます: $ git rebase --abort