Sponsor Link
環境&対象
- macOS Big Sur 11.1
- git 2.24.3(Apple Git-128)
前提
Git の上で git flow を使っているので、開発ブランチは develop、リリースブランチは、main です。
基本的に変更を入れるときは ブランチ -> トランク(develop or main) に反映 という手順にしています。
個人的な趣味かもしれませんが、fast-forward コミットは 好きでないので、develop や main に新しいコミットとしてマージしています。
自分しかコミットしないので、大きな Conflict は発生しないのですが、複数ブランチを使っているときは、可能な限りリベースして将来的な Conflict を減らそうとしています。
概要
上記のような前提だと、git はすごく シンプルに使うことになります。以下のようなパターンが大半です。
- ブランチを作成する (+ブランチ名の変更)
- ブランチにコミットする(+コメント修正)
- ブランチをトランクにマージ (+ブランチ削除)
- 複数のブランチが併存するケースでは、可能な限りリベースする
- 間違ったブランチで作業してしまい、変更を別ブランチに移動させる
ブランチ作成
何らかの変更を入れるときには、全てブランチを作成して作業します。
急いでいたりすると忘れがちなので、特に理由はなくとも、ブランチを作成し、checkout するようにしています。
その際のブランチ名は適当でも後から簡単に変更できます。
branchA というブランチを作りたければ以下のコマンドです。
% git checkout -b branchA
ブランチ名は、以下のコマンドで変更できます。
% git branch -m branchA newBranchA
変更をブランチにコミット
知らない人はいないですよね。
% git commit -m comment
コミットした後に、コメントを修正したくなったら以下のコマンドで修正できます。
% git commit --amend
ブランチをトランクにマージ
前提にも書きましたが、ファストフォワードが好きでないので、 –no-ff オプションをつけて使っています。
% git checkout develop // develop に移動 % git merge --no-ff branchA // ファストフォワードせずにマージ
トランクにマージして確認した後に、作業ブランチを削除してます。
% git branch -d branchA // branchA を削除
ブランチをマージした後に、既存別ブランチのベースを変更する
branchA と branchB を同じタイミングで develop からブランチさせて、最初に branchB を develop にマージしたとします。
branchA を (branchB をマージした) develop から再度ブランチさせることで、branchA を (将来的に)develop にマージするタイミングでのコンフリクトを減らすことができると予想できます。
ということで、すでにあるブランチを再度ブランチしなおす(リベースすると呼ばれます)には、以下のコマンドです。
% git rebase develop branchA
変更を別ブランチに移動させる
ブランチを間違えて作業してしまっても コミット前であれば、その変更を移動させることができます。
以下は、branchA でしてしまった作業を branchB へ移動させる操作です。
% git checkout branchA // branchA で作業 ・・・変更・・・ % git stash save // 現在の変更を save という名前で保存 ・・・変更が保存されます・・・ % git checkout branchB // branchB に移動 % git stash apply save // save という名前で保存された変更を反映 ・・・変更が不整合なく適用されたか確認 % git stash drop save // save という名前で保存された変更を破棄
SourceTree 等の GUI で操作することも多いですが、コマンドラインを覚えておくといざというときに便利です。
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
Sponsor Link