人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

TortoiseGitで20位のリビジョンまでやっていて、
・有るブランチをmasterより昔までresetだかrevertだかした。
・pushしようとしたら、pullしろといわれたが、強制的にpushした。
・ブランチが本当に訳が分からなくなった。

という事が有りました。

このこと自体は、もう(細かい経緯も思い出せないので)どうでも
良いですが、

質問として、
・やってはいけない事
・その代わりにやって良い事

の書かれたGitに関する資料は無いでしょうか?

●質問者: kuwadgi
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tmdat
●100ポイント ベストアンサー

質問者さんの欲する資料はないのですが,
私からがこれについて思っていることを述べます。

私にとってgitはタイムトラベルです。
作業用ブランチが現在で,masterが最近(最新のセーブポイント)です。
(ブランチは世界線(平行世界)といったとこ)。
git commitによって現在の状態をセーブし,新たなセーブポイントとします。
git revertは現在から最近に少しさかのぼります。
git resetは指定した時間に戻ります。

よくSF映画では,タイムパラドックスというものがあります。
過去に戻って,当時と違う行動をすることで未来が変わる,矛盾するというものです。
Gitでも同じことが言えます。

ここで,質問者さんの過去の失敗を例に挙げます。
・有るブランチをmasterより昔までresetだかrevertだかした。
※ここで過去にタイムトラベル
・pushしようとしたら、pullしろといわれたが、強制的にpushした。
※pushしようとした→当時と違うことをしようとした
pullしろといわれた→現在までと同じ振る舞いをしろ(masterをpullしろ)
強制的にpushした→当時と違うことをした→masterまでの歴史が変わった
・ブランチが本当に訳が分からなくなった。
※歴史が変わったので,質問者さんの知っている現在あるいは最近とは異なる現在にたどり着いた。


この問題について,やっていいこと悪い事は何かと考えるよりは,
ブランチの状態を理解して,いまやるべきことは何かと考える方が有効だと思います。

参考:ブランチモデルhttp://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-model.html
ブランチモデルは過去から未来への道しるべのようなものです(と私は感じています)。

ブランチの状態を理解できれば,過去のようなケースで
強制的にpushしてはいけいないと気付くはずです。
ちなみに,rebaseを使えば,その行動を過去の一部に組み込めたり,
mergeを使えば,2つの世界を1つに集約したりできます。

gitについての説明は難しので,噛み砕いて説明しようと思いましたが,
かなり変なたとえ話になってしまいました。
詳しいことはやはり本やWebが一番です。

結局言いたかったことは,
・ブランチモデルの理解
・エラーログは読む
この2つが大切だ,ということです。


kuwadgiさんのコメント
ありがとうございました。はげみになるお言葉です。 上司がVSS一本で、Subversionも俎上には上がっていますがVSSとの差異が少なく、 TFSとかお金も無いのに対し、Gitはいままで運用でカバーしていた部分も対象に なりそうで、本当に気にしています。 ただ、VSSだとロールバックのみ気にしていれば良かったのが、なにかすごい点が 推す妨げになっていました。本当にありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ