👻

Gitで過去の失敗を参考にしつつ新しいブランチで作業する方法

2024/09/07に公開

要約

Gitで、ブランチに行った作業を一からやり直したいときに、自分が作業した内容を見ながらより良い結果を作るための手順を示す。

はじめに

このドキュメントを書くにあたっての背景情報としては、
denoland/docs: Deno documentation, examples and API Reference. Powered by Lume.
のドキュメントをpo4a - ようこそを使い、
ドキュメントの更新があっても困らない仕組みを構築するために、試行錯誤の作業が必要で何回かやり直すであろう
作業手順を残しておく。

po4aやdocs.deno.comに関するアウトプットは別途行う予定です。

この文章を書いた動機

Gitでやり直しの作業手順の公開はいくつか検索に引っかかるが、過去は振り返らない手順が多いので、自分の成果を参照しながら、新しくやり直す方法を自分のために書いておく。Gitは人によってワークフローが異なるので、他の方法で過去の自分の作業を見ながら、新しくやり直す他の方法を読んでみたいので、別解の提示は歓迎します。

この文章はだれ向けか

この文書の対象者は、Gitを利用し過去の自分の失敗を乗り越えて、新しく作業を開始したい人です。

この文書の読み方

細かくは説明しないので、必要に応じて「参考にしたドキュメントたち」の部分で理解を深めてください。

本文

コアのアイディア

コアのアイディアは、現在のローカルブランチを破棄するのではなく、名前を変えてgit worktreeで参照し新しいブランチをmainやdevelopから派生させて、別ディレクトリで前の内容を確認しながら新しく作業する。

というもの。

作業手順

下記の順番で作業をする。

  • (存在してたら)リモートのブランチを消す
  • 既存のブランチの名前を変える
  • git worktreeの設定
  • 新しく、作業ブランチを作る
  • 実際に作業する
  • 後始末

リモートブランチの削除

  • git push --delete orign ブランチ名
git push --delete origin po4a 
Enter passphrase for key '/home/yabuki/.ssh/id_ed25519': 
To github.com:yabuki/deno-docs.git
 - [deleted]         po4a

ブランチ名の変更

  • git branch -m existing_branch new_branch
  1. git switch main # 影響を受けないmainブランチへ移動
  2. git branch -m po4a po4a-old# ブランチ名変更
  3. git branch -a # 変更の確認

git worktree の設定

  • git worktree list # 現状の確認
  • リポジトリのtop levelへ移動する
$ cd `git rev-parse --show-toplevel`
$ git branch -a
* main
  po4a-old
$ git worktree add ../old-po4a po4a-old
Preparing worktree (checking out 'po4a-old')
HEAD is now at 89687af Delete *-ja.md # 最後のコミットメッセージが出てる
ls ../old-po4a/ # 失敗したブランチの内容を確認する
lv ../old-po4a/po4a.cfg # 失敗したブランチの内容を確認する

新しく作業ブランチを作る

  • git switch -c new_branch

現在はmainいる設定なので、下記を実行する。

git switch -c po4a
Switched to a new branch 'po4a'

任意のブランチ、コミットから作業を開始したいなら、下記の「参考にしたドキュメント」を
見てほしい。

実際に作業する

この部分は、人によります。

私の話は、po4aの記事で書きます。

後始末

  • 作業ツリーを削除するrmコマンド
  • git worktree listで現状を確認
  • git worktree prune --dry-run で削除対象を確認
  • git worktree prune または --verboseオプション付きで実際に削除する
  • git worktree list削除を確認する。

参考にしたドキュメントたち

謝辞

さいごに

件名 日付
記事を書いた日 2024-09-07
記事を変更した日 2024-09-26

上記は、この記事の鮮度を判断する一助のために書き手が載せたものです。

詳細な変更履歴は、
GitHub - yabuki/friendly-potato: zenn-contents
を参照してください。

記事に対するTypoの指摘などは、pull reqをしてもらえるとありがたいです。
受け入れるかどうかは、差分とPull reqの文章で判断いたします。





GitHubで編集を提案

Discussion