編集作業+Gitでしあわせになる
前回の記事では、Git管理の最初の一歩を紹介しました。今回は、Gitの基本機能を説明しながら、編集者がGitをつかうとどんな良いことがあるのか見ていきます。
元原稿と現在の原稿を比較する ― オリジナルを確認しながら作業できる
書籍など、著者のお名前とともに公開される文章の編集作業においては、読みやすく正しい日本語を目指すだけでなく、元原稿を十分に尊重できているかどうか、著者の意図と違う文章を作っていないかという点に細心の注意が重要です。そのためには、常に元原稿と比較しながら作業を進める必要があります。
拡張機能GitLensを導入していれば、作業中の段落について、過去のバージョンをサクッと確認できます。
- エディタ上の比較したい段落で、右クリックして、「Open Changes」→「Open Changes With Revision…」をクリックします。
- 比較対象のバージョンを選択します。
- 該当箇所の差分が表示されます。
ファイルの変更を元に戻す ― うっかり事故から確実に原稿を復元できる
気を付けていても、うっかりミスは起こるものです。間違って別の内容で上書きしてしまった、自作スクリプトで不可逆的にファイルを壊した、など不幸な事故が起こったとき、「あのとき、あの時点に時を戻したい!」と願った経験は多くの人がお持ちではないでしょうか。Gitでバージョン管理していれば、それが可能です。
ファイルを変更したあと直前のバージョンに戻す操作は、ファイルが次のどの状況にあるかによって異なります。
- ステージング前(変更しただけ)
- ステージング後、コミット前
- コミット後
ステージング前の状態でファイルを元に戻す
- ソース管理ビューの「変更」で、ファイルの右にある「変更を破棄」をクリックします。
これは次のコマンドに相当する操作です。
$ git restore <ファイル名>
ステージング後、コミット前の状態でファイルを元に戻す
- ソース管理ビューの「ステージされている変更」で、ファイルの右にある「変更のステージング解除」をクリックします。
- ソース管理ビューの「変更」で、ファイルの右にある「変更を破棄」をクリックします。
これは次のコマンドに相当する操作です。
$ git restore --staged <ファイル名>
$ git restore <ファイル名>
コミット後の状態でファイルを元に戻す
- ソース管理ビューの右上のメニューアイコン「…」をクリックし、「コミット」→「前回のコミットを元に戻す」をクリックします。コミットの直前に時が戻ります。
- ソース管理ビューの「ステージされている変更」で、ファイルの右にある「変更のステージング解除」をクリックします。
- ソース管理ビューの「変更」で、ファイルの右にある「変更を破棄」をクリックします。
※ コミットを元に戻しても、修正内容はステージングされた状態で保持されているので、2、3の操作が必要です。
これは次のコマンドに相当する操作です。
$ git reset --soft HEAD~1
$ git restore --staged <ファイル名>
$ git restore <ファイル名>
ファイル単位で特定のバージョンに戻す
- エクスプローラービューでファイルを右クリックし、「タイムラインを開く」を選択します。
- 履歴から戻したいバージョン(該当コミットの直後の「ファイルが保存されました」)を選択し、「コンテンツの復元」をクリックします。
- ダイアログが表示されるので「復元」をクリックします。
※ 実は、VS Codeではファイル単位の復元のみであれば、Gitなしでも使用できました。ただ、Gitを使用していない場合はコミットメッセージが表示されないので、ほしいバージョンがどれなのか、非常にわかりづらくなります。
なお、コマンドを使用する場合は次のようになります。
$ git restore --source=<コミットごとのハッシュ値>
※ コミットごとのハッシュ値は、ソース管理ビューの「COMMITS」→該当のコミットの右端のコピーマークをクリックするとクリップボードにコピーされます。
プロジェクト全体を特定のバージョンに戻す
編集作業では、プロジェクト全体を一気に戻す機会はさほど多くないかもしれませんが、散々作業を進めた後に編集方針の変更を余儀なくされた場合など、全体を一気に戻したくなる場面は稀にあります。
- ソース管理ビューの「COMMITS」で、戻したい時点のコミットを右クリックし、「Reset Current Branch to Commit…」を選択します。
- 変更の扱いについて、オプションが表示されるので、次のいずれかを選びます。
- Reset: コミットを取り消し、変更は作業ディレクトリに保持(ステージングされていない状態)
- Soft Reset: コミットを取り消すが、変更はステージングされた状態で保持
- Hard Reset: コミットとその変更を完全に削除(注意: 変更内容は完全に失われます)
まとめ
以上で、Gitで基本的なバージョン管理ができるようになりました。原稿のバージョンを細かく保存し、作業内容を可視化しながら編集を進めることで、スクリプトなどの自動処理を活用しても安全性が確保できるため(うっかりバグのあるスクリプトを実行しても影響範囲が簡単に特定可能で、すぐに元の状態に戻せる)、編集の質だけでなく速度の向上にもつながります。
Gitにはここで取り上げた以外にも、ブランチによる複数のバージョンの維持、push/pullに代表されるリモートリポジトリの利用など、さまざまな機能があります。
また、GitHubなどのホスティングサービスを利用すれば、さらに便利な機能が多数使用できます。もちろん、複数人数で並行して編集作業を行う場合は、Git/GitHubの威力は絶大です。
でも、それらの高度な機能の前に、まずは第一歩。手元原稿のバージョン管理、みなさんもはじめてみてはいかがでしょうか。
(R&D かつの)