2023年11月28日火曜日

gitでバック・トゥ・ザ・フューチャー

ソフトウェアのバージョン管理といえば標準は既にgit。
ただまだまだ使いこなせている気がしません。
先日もちょっと困った場面に出くわしました。

gitで過去に戻ることはよくあります。
$ git log
で表示されるcommitのハッシュ値のうち
欲するバージョンのものをメモしておいて、
$ git checkout <ハッシュ値>
とすればいいだけです。
そこからさらに過去に戻るには同様にすればいいのですが、
"git log"で出てくるのはその時点より過去だけなので、
そこから未来の指定されたバージョンに進むには、
予め未来で"git log"の結果を保存しておき、
そのハッシュ値を指定してcheckoutすることになります。
うーん、わけわかんない、なんかタイムパラドックスが起きてそう。

では、一旦過去に戻ってから
完全に最新の未来に戻るにはどうしたらいいのか?
まさに「バック・トゥ・ザ・フューチャー」です。
私はこれまでは新たに
$ git clone
し直していました。
ただ先日、色々と都合があって
cloneせずになんとかしたい場面に直面しました。
で、調べてみたところ
$ git checkout <過去にチェックアウトしたブランチ名>
で戻せると。
今ひとつ理解できなかったのですが、
$ git branch -a
の結果をみてなんとなく分かりました。
実は
$ git checkout <ハッシュ値>
を実行した瞬間にテンポラリのブランチが作られ、
そちらの世界線に飛んでしまったようで、
$ git checkout <過去にチェックアウトしたブランチ名>
によって元の世界線に戻るということのようです。
まあ無事に未来に戻れてよかった。

0 件のコメント:

コメントを投稿