TortoiseGitで20位のリビジョンまでやっていて、

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

という事が有りました。

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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/08/18 08:05:36
  • 終了:2012/08/21 21:35:17

ベストアンサー

id:tmdat0083 No.1

tmdat回答回数7ベストアンサー獲得回数32012/08/19 22:23:51

ポイント100pt

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

私にとって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つが大切だ,ということです。

id:kuwadgi

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

2012/08/21 21:35:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません