はじめに
綺麗なコミットログを作りたいときの git テクニック - Qiita
上記の記事に触発され、この記事の内容を vscode から使う方法を紹介します。
vscode の extension が提供する API を使うため、ある程度自由度は減ります。
しかし、コマンドを覚える必要がないので、(私みたいな) ずぼらな人には役に立つかもしれません。
準備
適当にディレクトリを作って vscode で開き、適当なファイルを作成後、4 回ほどコミットします。
mkdir git-test
code git-test
git init
touch readme.md
echo 1st commit >> readme.md
git commit -a -m "1st commit"
echo 2nd commit >> readme.md
git commit -a -m "2nd commit"
echo 3rd commit >> readme.md
git commit -a -m "3rd commit"
echo 4th commit >> readme.md
git commit -a -m "4th commit"
git log
は以下のとおりです。
git log --oneline
# 0caea04 (HEAD -> master) 4th commit
# e4077ab 3rd commit
# db8f5e9 2nd commit
# 3c98dc7 1st commit
git rebase -i
で作業中のコミットを全て一つのコミットに squash する
GitlensのInteractive Rebase Editorを使用します。
コマンドパレットから行う
-
Ctrl+Shift+P
でコマンドパレットを開く -
GitLens: Git Rebase...
をクリック
-
Rebase
を行うブランチを選択 (↑↓ で選択可能)
-
Rebase
を行うコミットを選択
- こちらにあるように、リベースしたいコミットの 1 つ前を選択する必要がある
- 今回は
1st commit
を選択
-
Rebase
の方法を選択する。今回はgit rebase -i (--interactive)
を行いたいのでInteractive Rebase
を選択
- 以下のコマンドが実行される
git -c sequence.editor="code --wait --reuse-window" rebase --interactive 3c98dc7dc320bf2588b7ff29db087504b20df90a
- 以下のようなエディタ (タブ) が立ち上がる
- 通常の
git rebase -i
と同じようにそれぞれのコミットに対してアクションを選択する -
START REBASE
をクリック -
Rebase
が実行される
git log
でも Rebase が実行されていることが確認できます。
git log --oneline
# 4d1ea82 (HEAD -> master) 2nd, 3rd, 4th commit
# 3c98dc7 1st commit
サイドバーから行う
Rebase のターゲットにしたいブランチ、コミットを、サイドバーから選択することも可能です。
-
Source Control
(Ctrl+Shift+G G
)の COMMITS の任意のコミットで右クリックし、Rebase Current Branch onto Commit...
を選択
-
コマンドパレットから行うの
5.
と同じパレットが表示されるので、同様に作業する
git reset HEAD~
で一度コミットを取り消す
こちらは簡単に実行できます。
-
Ctrl+Shift+P
でコマンドパレットを開く -
Git: Undo Last Commit
を選択 (undo
とかで検索すると簡単に見つかります)
(ログを見ると、 git reset --soft HEAD~
コマンドが実行されてました)
git add -p
で作りたいコミットごとに変更を stage にあげていく
- Stage にあげたい行を選択する
-
Ctrl+Shift+P
でコマンドパレットを開く -
Git: Stage Selected Ranges
を選択 - 選択した行のみ Stage に移動する (同様に
Revert
も可能)
おわりに
よく使うコマンドは、ショートカットに登録しておくとさらに捗ります!!
良記事を書いてくださった @getty104 さんに感謝を。
皆様のご参考になれば幸いです。