1. ホーム
  2. git

[解決済み] Git には、レポの状態を丸ごと保存して安全に遊べるサンドボックス機能はありますか?

2022-02-19 02:02:37

質問内容

そこで、git リポジトリのクリーンアップを行う必要があることが分かっている時点で、潜在的に rebase やその他のものを使用して、間違った操作をすると元に戻すのが非常に面倒になる可能性があります。

Gitに "ローカルの git リポジトリ全体のこの状態を保存して、万が一うまくいかなかったときに、この時点まですべてをロールバックできるようにします。 サンドボックスモードのようなもので、何も台無しにすることなく、安全にレポをいじり、潜在的に危険な操作を行うことができます。

履歴の特定の時点にタグか何かを追加するということではなく、その時点の特定の状態からすべてのブランチの git リポジトリで行われたすべての変更をリセットするようなものについて話しています。ロールバックする可能性があるのは すべて (すべてのgitの履歴/状態)。OSXのタイムマシンに似たようなもの。

2019-02-19に更新しました。この「大惨事になりかねない操作」というのは、コードそのものではなく、git のリポジトリ構造を実際にいじくり回すことを意味しています。 git reset --hard などのコマンドがあります。

解決方法は?

あなたが探しているのは git worktree コマンドを使用します。

また、以下を参照してください。 https://git-scm.com/docs/git-worktree :

git リポジトリは複数のワーキングツリーをサポートしており、一度に複数のブランチをチェックアウトすることができます。git worktree add を使用すると、新しい作業ツリーをリポジトリに関連付けることができます。この新しい作業ツリーは、git-init や git-clone で用意したメイン作業ツリーに対して "リンク作業ツリー"(訳注: リンク作業ツリーと呼ばれます) と呼ばれます。リポジトリには、(ベアリポジトリでない場合は)1つのメイン作業ツリーと、0つ以上のリンクされた作業ツリーがあります。リンクされた作業ツリーを使い終わったら、git worktree remove でそれを削除してください。