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 までご連絡ください。