見出し画像

【SourceTree】ソースの部分的コミットとバックデート

こんにちは! エンジニアの宮Pです😎
今回はSourceTreeを使って、「ソースの一部だけコミットする手順」「コミットを取り消す手順」を試してみます。


複数の異なる内容の修正を追加

コーディングを続けていると、ついコミットを忘れて作業を続けてしまうことがあります。
表示関係の処理を実装中に、ふと思いついてファイル出力処理を修正した、なんてよくあることだと思います😅
ここで「表示関係の処理」に用いたファイルをコミットしようとすると、一緒に「ファイル出力処理の修正」内容も付いてきてしまいます。
作った本人はともかく、他の人が見たら「ファイル出力の修正も、表示処理に関連があるのか?」と勘違いをしてしまうかも知れません。
こんなときは「ソースコードの一部」を選択してコミットすると便利です。

いつものindex.htmlを使って、この実験をしてみます。
<body>タグの中身を少し変更して、見出し2の下に画像を1つ表示させます。

<body>
  <h1>SourceTreeの練習</h1>
  <h2>見出し…(1)</h2>
  <h2>見出し…(2)</h2>
  <img src="ktbn.jpg" width="200" height="200">
</body>

表示させるのは、いつもの弊社ロゴです。
幅200px、高さ200pxに設定すると、このように表示されました。

ロゴ画像が表示されました

そういえばタイトル部分の「Document」は、初期状態のままでしたね。
<title>タグの中身を変更します。

  <title>SourceTreeの練習</title>
タイトルを変更しました

ここで追加した画像表示に関する処理をコミットしたいのですが、SourceTreeで確認すると、index.htmlの変更点は「画像表示」と「タイトル変更」の2か所になっています。
このままコミットしても間違いではありませんが、画像は画像、タイトルはタイトルで別々にコミットしたいですね🤔

上はタイトル変更、下は画像表示

このようなケースでは、ソースの一部だけをコミットする方法があります。
実際にやってみましょう。

ソースを部分的にコミット

index.htmlの2つの変更箇所のうち、画像表示に関する<img>タグの行を選択します。
変更箇所のプレビュー部分のボタンが[選択した行をステージへ移動]に変化するので、このボタンをクリックします。

下部の変更だけをコミットします

作業ツリーにも、ステージにも、index.htmlが表示されています。
ステージされたindex.htmlを選択状態にすると、imgタグの行だけが変更履歴として表示されます。

こちらがコミットの対象

一方、作業ツリー側のindex.htmlを選択すると、タイトル修正に関する箇所だけが変更履歴として表示されます。
これは、今回はコミットされない変更箇所です。

タイトル変更部分は、今回コミットされません

この機能を使うと、同じ1つのファイルの中で、その変更箇所ごとにコミットすることができるということです😉

まずはステージへ移動させた内容を「画像表示処理を追加」としてコミットします。
次に作業ツリーにあるindex.htmlファイルをステージへ移動させて、「タイトルを変更」としてコミットします。
これで画像表示とタイトル変更の変更内容が、それぞれ別のものとしてコミットされました。

コミットの取り消し

今回はもう1つ、コミットを取り消す方法も試してみます。
本来、十分に確認をとった上でコミットをすべきなのですが、人間誰しも間違うことはあります。
「しまった!」と気づいたときに、そのコミットを無かったことに出来たら良いですよね😋

先ほどの「タイトルを変更」コミットを使って、コミットの取り消し方法を確認します。
「画像表示処理を追加」部分を右クリックすると、プルダウンメニューが表示されます。
この中の「現在のブランチをこのコミットまでリセット」を選択すると、文字通りに、そのコミットの時点までバックデートさせることが可能です。

「このコミットまでリセット」を選ぶと、こんな確認ダイアログが表示されます。

「使うモード」という選択肢について、少し説明します。

  • Soft …… 変更したファイルの内容はそのままにして、Indexにステージされた状態に戻します

  • Mixed …… 変更したファイルの内容はそのままにして、Indexにステージされていない状態に戻します

  • Hard …… すべての変更を破棄します

今回はデフォルトのMixedを選んだままリセットします。
履歴画面から「タイトルの変更」が削除されました。

画像表示処理を追加が、最新のコミットになりました

ファイルステータス画面に切り替えると、ステージされない状態のindex.htmlがあるのが分かります。

注意しなくてはいけないのは、このコミットの取り消しはかなり強力な手段であるということです🙁
今回のテストはローカル環境で作業をしているため、影響を受けるのは自分のみです。しかし、複数人のチームにおいてgit経由でソースを共有する場合、コミット取り消しが他の人に大きな影響を与える可能性があります。
各メンバーに十分な確認を取ったうえで実施するか、さもなければコミットを取り消すよりも、対象のファイルを変更して再コミットするのが無難でしょう。

まとめ

今回は、SourceTreeの中で「便利だけど、あまり使わないかな」と思える機能を試してみました。
他の作業者とリモートリポジトリを共有する前に、ローカルリポジトリでSourceTreeの動作の確認をしておくと、安心して色々な機能を使えそうですね。
SourceTreeを上手く使って、効率をアップさせましょう!🙂

私たちは、お客様のご要望にあわせて様々なコンテンツ、アプリを制作いたします。
ご質問やご要望は、<お問い合わせページ>よりお送りください。


この記事が気に入ったらサポートをしてみませんか?