Gitコマンドでブランチ作成からマージまでを行う

2 min read読了の目安(約2200字

※必要に応じて追加するつもり

実施環境

  • git version 2.7.4
  • Windows 10 Enterprise
  • ブランチ名
    • マージ先: develop
    • 作業ブランチ: issue-xx

手順

1. 最新のdevelopでブランチを作成する

  1. developに移動
    git checkout develop
    
  2. 最新のdevelopを取得
    git pull
    
  3. 作業ブランチ作成&作業ブランチに移動
    git checkout -b issue-xx
    

※作ったブランチ名を間違えたとき(変更したいブランチにいる状態で実行)

git branch -m <新しいブランチ名>

作成済みのブランチをローカルにチェックアウトする場合

git checkout -b issue-xx origin/issue-xx

2. 変更をステージングする

  1. 変更したファイルを確認
    git status
    
  2. 変更したファイルをすべてステージに追加
    git add .
    
    # ファイル指定の場合
    git add <ファイルへのパス>
    

ステージングを取り消し

  • すべて取り消し
    git reset HEAD
    
  • ファイル指定の場合
    git reset HEAD <ファイルへのパス>
    

変更を取り消し

※ステージに追加する前の場合

  • 全部の変更を元に戻す(新規作成ファイルは削除されない)
    git checkout .
    
  • 全部の変更を元に戻す(新規作成ファイルも削除する)
    git clean -df .
    
  • 1ファイルの変更を元に戻す
    git checkout <元に戻したいファイルへのパス>
    

3. 変更をコミットする

  1. ステージに追加したファイルをコミット
    git commit -m "コミットメッセージ"
    
  2. コミット内容を確認([q] で終了)
    git show <コミットのハッシュ値>
    
  3. リモートブランチにプッシュ
    git push origin issue-xx
    
  4. レビューを依頼&指摘対応

3.1. コミット内容を変更する(プッシュ前)

  • コミットメッセージを修正する
    git commit --amend -m "修正したコミットメッセージ"
    
  • コミットにファイルを追加する
    git add <追加するファイルへのパス>
    git commit --amend --no-edit
    
  • コミットを取り消し&ステージングを戻す
    git reset --mixed HEAD~
    

4. developへマージ(コンフリクトなしの場合)

  1. 最新のdevelopに更新
    git checkout develop
    git pull
    
  2. 作業ブランチをdevelopへマージする(developで実行)
    git merge --no-ff issue-xx
    
  3. 必要ならコミットメッセージを修正する
    git commit --amend -m "修正したコミットメッセージ"
    
  4. コミット内容を確認([q] で終了)
    git log
    git show <コミットのハッシュ値>
    
  5. プッシュ
    git push origin develop
    

その他

スタッシュを使う

  • スタッシュへ退避
    git stash save "メッセージ"
    
  • スタッシュを確認
    git stash list
    stash@{0}: On issue-xx: 退避時に設定したメッセージ
    
  • スタッシュから戻す
    git stash apply stash@{0}
    
  • スタッシュを削除
    git stash drop stash@{0}
    
  • スタッシュから戻す&削除
    git stash pop stash@{0}
    

cherry-pick(他のブランチの特定のコミットを取り込む)

  1. 取り込みたいコミットのIDをgit logなどから取得する(ここでは「xxxxxxxx」と表示)
  2. コミットを取り込みたいブランチに移動する
    git checkout issue-xx
    
  3. cherry-pickを実行(コンフリクトがない場合)
    git cherry-pick xxxxxxxx