Gitで編集したファイルの1部分だけを個別にコミットする方法があるの知ってました?
僕は最近知ったんですが、ファイルをステージする際にパッチ(–patch)というオプションがあって、かなり柔軟な操作が可能です。この機能を使うと、たとえばA、B、Cという3つの変更箇所があったとして、まずはAとCをステージしてコミットして、その後、Bをコミットするといったことができちゃいます。便利ですね🤩
ということで、忘れないうちにやり方をメモっておきます。
Gitのステージのパッチオプションの使い方
git addでファイルをステージするときに、-pまたは--patchオプションを使います。
git add -p <ファイル名>
このコマンドを打つと、指定したファイルに加えられた変更が順に表示されて、表示された変更部分(hunkと呼ぶ)をステージするかを聞かれます。
(1/3) Stage this hunk [y,n,q,a,d,j,J,g,/,s,e,?]?
あとはyかnでステージする部分を選ぶだけです。操作を中止する場合はqを押します。
他にもいろいろオプションがあって、かなり柔軟にステージする部分を選択できます。その他の操作に書いたように、このコマンドを使ってステージした部分を確認したりやり直しもできるので、覚えておくと便利です。
| キー | 操作 |
|---|---|
| y | 表示されたhunkをステージする |
| n | 表示されたhunkをステージしない |
| q | 表示されたhunkと残りのhunkをステージせずに操作を中止する |
| a | 表示されたhunkと残りすべてのhunkをステージする |
| d | 表示されたhunkと残りのhunkをステージしない |
| j | 表示されたhunkを未決定のままにして次の未決定のhunkを表示する |
| j | 表示されたhunkを未決定のままにして次のhunkを表示する |
| k | 表示されたhunkを未決定のままの状態で前の未決定のhunkを表示する |
| K | 表示されたhunkを未決定のままの状態で前のhunkを表示する |
| g | 表示するhunkを選ぶ |
| / | regexでhunkを検索する |
| s | 表示されたhunkをより細かく分割する |
| e | 表示されたhunkを編集する |
| ? | ヘルプを表示する |
その他の操作
ステージした部分の確認
git diff --staged
ステージした部分の再編集
git reset -p
このコマンドを打つと、以下のように聞かれてステージから外す部分を選べます。
(1/2) Unstage this hunk [y,n,q,a,d,j,J,g,/,e,?]?
以上、Gitで編集したファイルの1部だけをコミットする方法でした!
Git / GitHub関連の他の記事
2020年7月23日に公開され、2020年8月7日に更新された記事です。
About the author
「明日のウェブ制作に役立つアイディア」をテーマにこのブログを書いています。アメリカの大学を卒業後、ボストン近郊のウェブ制作会社に勤務。帰国後、東京のウェブ制作会社に勤務した後、ウェブ担当者として日英バイリンガルのサイト運営に携わる。詳しくはこちら。
ウェブ制作・ディレクション、ビデオを含むコンテンツ制作のお手伝い、執筆・翻訳のご依頼など、お気軽にご相談ください。いずれも日本語と英語で対応可能です。まずは、Mastodon @rriver@vivaldi.net 、Twitter @rriver 、またはFacebook までご連絡ください。