[過去ログ] Git 18 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1:   (ワッチョイ 9ce4-E6ke) 2022/04/23(土)03:25 ID:HOOXt/T30(1) AAS
 ソースコード管理を行う分散型バージョン管理システム、Gitについて語ろう。 
  
 Git - Fast Version Control System 
 外部リンク:git-scm.com 
  
 ◆関連サイト 
 Pro Git - Table of Contents 
 外部リンク:git-scm.com 
 Git入門
省6
922(1):  (ワッチョイ 617b-8+ss) 2022/11/05(土)22:35 ID:646uiMLL0(30/38) AAS
 >>920 
 > @{1}はひとつ前の操作によってHEADになったhashだから、どういう操作したかで変わり、リポジトリの構造とは関係無い 
 だから、それは「そのbranchの」一つ前の操作なんだよ。 
 結果、diffは、masterブランチでは>>912で、HEAD~1 != @{1} だが、 
 developブランチでは、以下になって、 HEAD~1 == @{1} なんだよ。 
  
 $ git diff HEAD~1 
 diff --git a/test.txt b/test.txt
省21
923(1):  (ワッチョイ 09e4-chQ5) 2022/11/05(土)22:40 ID:zDjINlW+0(15/26) AAS
 最終的にお前のリポジトリは git merge develop でこうなっているはずだ 
  
 $ git log --graph --branches --oneline 
 * 1a804d9 impl5 (HEAD -> master, develop) 
 * xxxxxxx impl4 
 * xxxxxxx impl3 
 * xxxxxxx impl2 
 * xxxxxxx impl1
省11
924(1):  (ワッチョイ 617b-8+ss) 2022/11/05(土)22:46 ID:646uiMLL0(31/38) AAS
 >>921 
 @はやっぱcommit履歴だよな? 
  
 エントリポインタだけだと、commit履歴に出来ないんだよ。 
 今回はfast-forwardマージしてるから、 
  
 init<-0<-1<-2<-3<-4<-5 = master, develop 
  
 で、単にエントリポイントだけなら master も develop も同じ 5 で区別がない。 
 当たり前だが両方とも HEAD~1 は4を指してる。
省5
925:  (ワッチョイ 09e4-chQ5) 2022/11/05(土)22:50 ID:zDjINlW+0(16/26) AAS
 >>922 
 masterブランチをdevelopブランチにマージする方法が 
 git switch masterとgit merge developの連続実行だけではないし、 
 HEAD@{n}は適当なタイミングでGCされるから、 
 HEAD@{n}をそんな用途に使う奴はいない 
926(2):  (ワッチョイ 09e4-chQ5) 2022/11/05(土)22:52 ID:zDjINlW+0(17/26) AAS
 >>924 
 commit履歴がどこにあるか説明するのに使いたいから、git log --graph --branches --oneline してくれ 
927:  (ワッチョイ 09e4-chQ5) 2022/11/05(土)22:54 ID:zDjINlW+0(18/26) AAS
 @はcommit履歴じゃなくて、reflogの履歴 
928(1):  (ワッチョイ 617b-8+ss) 2022/11/05(土)22:57 ID:646uiMLL0(32/38) AAS
 >>926 
 $ git log --graph --branches --oneline 
 * 1a804d9 (HEAD -> master, develop) impl5 
 * ba4e962 impl4 
 * a32e11d impl3 
 * 8d9924f impl2 
 * 0f78740 impl1
省2
929(1):  (ワッチョイ 09e4-chQ5) 2022/11/05(土)23:01 ID:zDjINlW+0(19/26) AAS
 @{n}はカレントブランチのreflog履歴になるはず 
 reflog履歴はブランチ毎に存在するので 
 master@{n}とdevelop@{n}は違うハッシュになってるはず 
 git reflog masterとgit reflog developで比べてみればわかる 
930(3):  (ワッチョイ 617b-8+ss) 2022/11/05(土)23:04 ID:646uiMLL0(33/38) AAS
 >>917,926 
 ちな --no-ff 版、 
 今出すと余計に混乱するかもだが。 
  
 $ git log --graph --branches --oneline 
 *   a5aaf72 (HEAD -> master, develop) Merge branch 'feature5' into develop 
 |\ 
 | * e03bcd0 impl5
省22
931(1):  (ワッチョイ 617b-8+ss) 2022/11/05(土)23:08 ID:646uiMLL0(34/38) AAS
 >>929 
 $ git reflog master 
 1a804d9 (HEAD -> master, develop) master@{0}: merge develop: Fast-forward 
 b0325fc master@{1}: commit (initial): initial 
  
 $ git reflog develop 
 1a804d9 (HEAD -> master, develop) develop@{0}: merge feature5: Fast-forward 
 ba4e962 develop@{1}: merge feature4: Fast-forward
省9
932(2):  (ワッチョイ 09e4-chQ5) 2022/11/05(土)23:09 ID:zDjINlW+0(20/26) AAS
 >>928 
 impl5のコミットオブジェクトの hash = 1a804d9 
 impl5のコミットオブジェクトの中には親のコミットオブジェクトimpl4の hash = ba4e962 が格納されている 
 impl4のコミットオブジェクトの hash = ba4e962 
 impl4のコミットオブジェクトの中には親のコミットオブジェクトimpl3の hash = a32e11d が格納されている 
 impl3のコミットオブジェクトの hash = a32e11d 
 impl3のコミットオブジェクトの中には親のコミットオブジェクトimpl2の hash = 8d9924f が格納されている
省10
933:  (ワッチョイ 09e4-chQ5) 2022/11/05(土)23:11 ID:zDjINlW+0(21/26) AAS
 >>930 
 ¥で表示されるとちょっと見にくいが、慣れれば見やすい 
934:  (ワッチョイ 09e4-chQ5) 2022/11/05(土)23:14 ID:zDjINlW+0(22/26) AAS
 >>931 
 逆だ。コミットのつながりはコミットオブジェクトの中にしかない >>932 みたいにね 
 それを説明してるのが >>902 
935(1):  (ワッチョイ 09e4-chQ5) 2022/11/05(土)23:16 ID:zDjINlW+0(23/26) AAS
 >>930は最後のdevelopのマージが --no-ff になってないな 
 最後のも --no-ff にするともっと面白いぞ 
936(1):  (ワッチョイ 617b-8+ss) 2022/11/05(土)23:18 ID:646uiMLL0(35/38) AAS
 >>932 
 ごめん、それは分かってる。 
 それはグローバル履歴=gitオブジェクトを辿った履歴、だろ。 
  
 問題は、masterのcommitには b0325fc と 1a804d9 しかない、という情報が、 
 今のところ master の reflogにしか見あたらないんだよ。 
 だから、各branchを消したら、それ以前の gitオブジェクト は全部辿れるが、commit履歴は消失してしまう。 
 今のmasterみたいに、fast-forwardマージで中間をすっ飛ばしてきた、
省3
937(1):  (ワッチョイ 617b-8+ss) 2022/11/05(土)23:21 ID:646uiMLL0(36/38) AAS
 >>935 
 ほい 
 $ git log --graph --branches --oneline 
 *   2fb59f1 (HEAD -> master) Merge branch 'develop' 
 |\ 
 | *   25e1b95 (develop) Merge branch 'feature5' into develop 
 | |\
省24
938(2):  (ワッチョイ 09e4-chQ5) 2022/11/05(土)23:23 ID:zDjINlW+0(24/26) AAS
 >>936 
 FFマージしたらその情報は消滅するな 
 --no-ff で全部マージすれば複数親のハッシュをもってるコミットオブジェクトの1番目だけたどればいける 
 ^1 だけみていくね 
 git log にはそれをやるオプションがあるはず 
  
 >>930をそのオプションで表示すればこんな風に表示されるはず 
  
 $ git log --graph --branches --oneline --オプション忘れた探せ
省7
939(2):  (ワッチョイ 09e4-chQ5) 2022/11/05(土)23:26 ID:zDjINlW+0(25/26) AAS
 >>937 だとこう表示されるはず 
 $ git log --graph --branches --oneline --オプション忘れた探せ 
 * 2fb59f1 (HEAD -> master) Merge branch 'develop' 
 * 832f464 initial 
940:  (ワッチョイ 617b-8+ss) 2022/11/05(土)23:35 ID:646uiMLL0(37/38) AAS
 >>938 
 $ git log --graph --branches --oneline --first-parent 
 * a5aaf72 (HEAD -> master, develop) Merge branch 'feature5' into develop 
 * 324df68 Merge branch 'feature4' into develop 
 * 68ed20a Merge branch 'feature3' into develop 
 * 608e5d7 Merge branch 'feature2' into develop 
 * 3924eae Merge branch 'feature1' into develop
省13
941:  (ワッチョイ 09e4-chQ5) 2022/11/05(土)23:41 ID:zDjINlW+0(26/26) AAS
 >>939がそう表示されるのは、--no-ff マージの手順が何か普通とちがうからかもしれん 
 >>939みたいに表示させるマージの手順もあるはずだから工夫してみるんだな 
942:  (ワッチョイ 617b-8+ss) 2022/11/05(土)23:41 ID:646uiMLL0(38/38) AAS
 >>938 
 なるほど了解した。 
 データ側に混ぜ込んでて、保持したければ --no-ff で使えってことか。 
  
 そもそも同じハッシュなら同じgitオブジェクトにリンクするようになってるのだし、 
 (つまり見た目が膨らんでるだけで実際の容量は大して食わない) 
 --no-ff がデフォのほうがよかった気がするが。 
  
 まあとにかく了解した。長々とありがとう。 
943(2):  (ワッチョイ 527c-zlm6) 2022/11/06(日)00:38 ID:UPUgwCSv0(1) AAS
 FFがデフォじゃなと使いにくい気がするのだがw 
944:  (ワッチョイ 617b-8+ss) 2022/11/06(日)09:32 ID:OfQ8ymDc0(1/24) AAS
 >>943 
 ffがデフォのメリットって何だ?特にないと思うが。見た目すっきり、か? 
 ただまあ、デフォだし、サル先生他も特に何も言ってないので、ffでの運用が多数派なのだろう。 
  
 --no-ffはcommitオブジェクトが別に作られるだけで、 
 スナップショットに比べたらゴミなので全体としては大して増えない。 
 commit履歴はgitオブジェクトツリー内に混ぜ込まれ、完全に保持される。 
  
 ffの場合は、commit履歴情報はreflogにしか無いので、branchを削除したら基本的に失われる。
省17
945:  (ワッチョイ 617b-8+ss) 2022/11/06(日)09:32 ID:OfQ8ymDc0(2/24) AAS
 あと、Gitのドキュメントは全般的によく出来ているが、branchは「線だ!」と言ってるのは不適切だ。 
 Gitのドキュメントは密結合状態、つまりGitをよく知ってる人向けに書かれているので、 
 同様に内部実装を見せる形で書くのが正しく、 
 つまり、「branchは『線』のように見せてますが、実は『点』です!」と言わないと誤解される。俺がそうだが。 
 これは解像度が統一されてないから起こった問題だ。 
 一般のマニュアルは疎結合状態、 
 つまりそのツールについて内部実装なんて全く知らないし知る由もない人向けに書かれるから、
省12
946:  (ワッチョイ 617b-8+ss) 2022/11/06(日)09:33 ID:OfQ8ymDc0(3/24) AAS
 ただこれだと、branchを「線」として扱おうとしたら動作が不安定になるわけで、 
 おそらくfilter-branchが不安定なのはこの辺に起因してる。 
 そしてドキュメントの何処か(多分showかlog)に、 
 「これには実はpitfallがあって、マージに遭遇した場合に分岐するから云々」とかいう 
 (当時の俺にとって)謎の記述が挿入されてたのも納得がいく。 
 commit履歴を保持してないから確定的動作が出来ないんだよ。 
 これははっきり言って仕様の欠陥で、commit履歴も完全に保持する仕様だったら自然と回避出来てた。
省14
947(1):  (ワッチョイ debb-qVfh) 2022/11/06(日)10:57 ID:FBkt/oHG0(1/8) AAS
 長々と無駄な長文と大量投稿でスレを穢すんじゃねー。 
 単に既存のバージョン管理ツールと、git の考え方の違いが理解できてないだけじゃねーか。 
 ・git はパッチ管理ツール、作業履歴管理ツールじゃない。 
 ・ソフトウェアはパッチとパッチを当てる順番で構成されている。 
 1000回唱えろ。この思想が気に要らなければそもそも git 使うな。 
948(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)10:59 ID:OfQ8ymDc0(4/24) AAS
 >>943 
 と思ったが、ffじゃないとhashが違うからウザいな。別物扱いだから、一々確認いるし。 
 オブジェクトツリーはffの方がいい。 
  
 ただこれだとcommit履歴が無く、俺的にはまずいので、別に保存したい。 
 ソースと混ざるとウザイので、可能なら分離したい。 
 ドキュメントによるとマルチルートも出来るらしいが、これはどうやってやるんだ? 
 > Each project must have at least one root. A project can also have multiple roots, though that isn’t common (or necessarily a good idea). 
949(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)11:04 ID:OfQ8ymDc0(5/24) AAS
 >>947 
 > ・git はパッチ管理ツール、作業履歴管理ツールじゃない。 
 ああ非常に納得出来る。Gitはmerge特化型だ。 
 確かにそれを日々の業務(非merge)に使おう、というのがフィットしないんだろうよ。 
  
 しかし世の中の一般人のGitの使い方は後者だろ。 
950(1):  (ワッチョイ 515f-pSqO) 2022/11/06(日)11:33 ID:sj15aRfA0(1/4) AAS
 ということにしたいのですね。 
951:  (ワッチョイ debb-qVfh) 2022/11/06(日)11:46 ID:FBkt/oHG0(2/8) AAS
 >>949 
 お前の狭い世間なんて知るか 
 お前は話題の電動ドリル買ってきて釘打つのに不便ガンガンってやりながら文句言ってるのと同じレベル 
 そもそもマニュアルもちゃんと読めてないだろ。root と route を間違える英語レベル 
 背伸びして git 学ぶ前に高校に進学して英語学んだ方が近道だぞ 
952(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)11:51 ID:OfQ8ymDc0(6/24) AAS
 >>950 
 いや事実だよ。 
 Linusは確かにmergeしかしないんだろうけど。 
だけどその、mergeするパッチを書く奴は、それを一発で書けたわけがないんだ。 
 何日もかけて、何回も直して、そこに到達してる。 
 この過程のサポートがGitにはない。 
 別branchで作業してもmerge時にhash値が組み込まれるから、
省12
953(1):  (ワッチョイ debb-qVfh) 2022/11/06(日)12:07 ID:FBkt/oHG0(3/8) AAS
 >>952 
 アホか。共同開発が全く理解できてねーじゃねーか。 
 お前の試行錯誤の記録を push しようとしてんじゃねーよ。 
 手元で試行錯誤して実装できたら、それを元に綺麗なパッチに書き直す作業するんだよ。 
 そして完成した綺麗なパッチ群のみを共有リポジトリに公開するんだよ。 
954(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)12:19 ID:OfQ8ymDc0(7/24) AAS
 >>948 
 一応見つけた。 git worktree らしい。 
 複数のbranchを同時に開く機能で、DBで言うATTACHっぽい。 
955(1):  (ワッチョイ b114-pSqO) 2022/11/06(日)12:20 ID:JyiC8cnE0(1/6) AAS
 試行錯誤はすべて記録に残すべき 
 →じゃあテキストエディタで保存するたびに記録するべきっていうのか? 
  
 こういう話なので無視すんなよ?w 
956:  (ワッチョイ b114-pSqO) 2022/11/06(日)12:21 ID:JyiC8cnE0(2/6) AAS
 バージョン管理はソースコードの変更履歴を残すのであって 
 作業履歴を残すものじゃないっていうのが分かってなさすぎ 
957(2):  (ワッチョイ 617b-8+ss) 2022/11/06(日)12:30 ID:OfQ8ymDc0(8/24) AAS
 >>953 
 それはいいんだけどさ、その肝心のパッチを書く人へのサポートがまるでないだろ。 
 出発点がgit clone で、その上で作業して、終われば pull request する前提なのにさ。 
  
 そしてOSSではなく一般企業等で使ってる奴は、 
 当たり前だが日々の作業のバックアップや巻き戻し出来るシステムが必要で、そう使ってる。 
 だから、Gitが難しすぎるというのは、目的外使用だから意味が分かりにくい、というのはあるね。 
 Indexもマージの時にはあった方が便利なんだろうしさ。(ただのcommitには邪魔でしかない)
省3
958(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)12:32 ID:OfQ8ymDc0(9/24) AAS
 >>955 
 > こういう話なので無視すんなよ?w 
 無視する/しない以前に、何が言いたいのか分からないから反応しようがないんだよ。 
959:  (ワッチョイ 515f-pSqO) 2022/11/06(日)12:42 ID:sj15aRfA0(2/4) AAS
 >>957 
 > それはいいんだけどさ、その肝心のパッチを書く人へのサポートがまるでないだろ。 
 rebase あるよ。 
 元のローカルブランチを消さないでおけば記録もぜんぶ残るし。よかったね。 
960(1):  (ワッチョイ debb-qVfh) 2022/11/06(日)12:43 ID:FBkt/oHG0(4/8) AAS
 >>957 
 git ほどパッチを書くのに向いてるツールは他にないぞ。 
 index 無しでどうやってパッチの分割とかするんだよ? 
961(2):  (ワッチョイ 617b-8+ss) 2022/11/06(日)12:53 ID:OfQ8ymDc0(10/24) AAS
 >>960 
 最初から一つずつ書けば分割の必要ないし、 
 Index無くてもdiffの出力を絞ってpatchに食わせれば普通に分割出来るだろ。 
962:  (ワッチョイ b114-pSqO) 2022/11/06(日)13:02 ID:JyiC8cnE0(3/6) AAS
 >>958 
 書いてあるとおりじゃん。 
 試行錯誤の履歴を全部取れというなら、テキストエディタで保存するごとに 
 gitでコミットしなければならないはずだ 
 お前の主張はそういうことなんだから、それをちゃんとやれってこと 
963(1):  (ワッチョイ b114-pSqO) 2022/11/06(日)13:04 ID:JyiC8cnE0(4/6) AAS
 >>961 
 コミットがメチャクチャなのに、どうやってdiffとってパッチできると思ってるの? 
 そのdiffには関係がない修正が大量に入ってるだろ 
964(1):  (ワッチョイ debb-qVfh) 2022/11/06(日)13:37 ID:FBkt/oHG0(5/8) AAS
 >>961 
 なんも分かってないことを露呈しているな。 
 A,B,C,D,Eとコミットした後に Cはc1,c2,c3に分割すべきで、BとEは一つにすべきで、Aは不要だったと気づいたらどうすんの? 
 こういうのがお手軽にできて綺麗なパッチ群に整理できるのがパッチ管理ツールである git の利点なんだ。 
 そういうのやったことないだろ? 
965(1):  (ワッチョイ 09e4-chQ5) 2022/11/06(日)13:39 ID:az1H5JFk0(1/7) AAS
 >>954 
 脊髄反射で理解したつもりになって書いてるだろ正解率が著しく低い 
  
 git worktreeは一つのリポジトリに追加のワークツリーを用意して、異なるブランチをそれぞれ別のワークツリーにcheckoutできるようにする機能 
 DBのATTACHとは全然違う 
  
 マルチルートは普通に作ったリポジトリをfetchやpushで合成してmerge --allow-unrelated-historiesすればできる 
 でもこれはかなり特殊な用途に使うもので普段使いするようなものではない 
966:  (ワッチョイ 617b-8+ss) 2022/11/06(日)13:46 ID:OfQ8ymDc0(11/24) AAS
 >>965 
 実は今し方ドキュメント読んで、これは違うと書こうとしたところだった。 
 wor,ktreeはstashの代わりで、同時作業用ではないね。 
  
 > マルチルートは普通に作ったリポジトリをfetchやpushで合成して 
 ああこれは俺の要求とは違うね。 
  
 まあ、もう地味に.git/.xxx/に転がそうと思案中。 
967(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)13:57 ID:OfQ8ymDc0(12/24) AAS
 >>963,964 
 お前らunixコマンドの使い方知らないだろ。 
 patch/merge/diff3はgit以前からあるコマンドで、多分初期Gitはそのまま使ってたと思うが。 
  
 具体的な使い方は以下。 
 今、元 fileA に対して、変更後 fileC になってるが、実は中間の fileB が欲しかったとする。このとき、 
  
 cp fileA fileB 
 diff fileA fileC | less -N; // ここで該当行を確認する。例えば10-20行目なら、
省3
968(1):  (ワッチョイ 09e4-chQ5) 2022/11/06(日)14:05 ID:az1H5JFk0(2/7) AAS
 >>967 
 そういう作業を必要で無くすためにgitが生まれた 
 patchの提出をgitの分散リポジトリ上で可能とするためにね 
 963とか964が行ってるpatchというのは、いわゆるpatchファイルのことではなく、ブランチ上に存在する差分の事 
 そのpatchを整理するのに index や rebase がある 
969(1):  (ワッチョイ debb-qVfh) 2022/11/06(日)14:19 ID:FBkt/oHG0(6/8) AAS
 もしかして、もしかすると、git では「パッチ=コミット」っていうことすら理解できてないのだろうか。 
 まさかそんな人はいないよね。単に言動が変な人なだけだよね。 
970(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)14:25 ID:OfQ8ymDc0(13/24) AAS
 >>968 
 知ってるよ。 
  
 ただまあ、確かにパッチ管理ツールだ。 
 プログラマはこれをソースコード管理ツールとして使おうとするから問題なのだろう。 
 バックアップが取れて、履歴が戻れれば何でもいいんだが、mergeも出来るから便利だからね。 
  
 なお俺は 
 > ブランチ上に存在する差分の事
省2
971(1):  (ワッチョイ debb-qVfh) 2022/11/06(日)14:31 ID:FBkt/oHG0(7/8) AAS
 >>970 
 ちがうぞ。最初からパッチ管理ツールとして設計されるぞ。 
 そしてパッチ管理ツールなんだから、パッチの出力機能さえあれば良いんだぞ。 
 それ以外の差分が欲しかったら別の外部ツール使えば良いんだぞ。それこそ基本だろ 
972(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)14:33 ID:OfQ8ymDc0(14/24) AAS
 >>969 
 各commmit「点」でdiff取ったときに落ちる情報って何? 
 ああcommitメッセージか?そんなのは知らんし要らんよ、って立場。 
  
 つか、commitメッセージガーなんて言い訳にならないから、 
 どのみちソースコードを確認するしかないんだよ。 
 commitメッセージはその手がかりとラベルに過ぎない。これが俺、というか多分普通のプログラマの立場。 
 お前らはcommitメッセージが間違ってたら、そいつに責任を負わせられるんだろうさ。
省4
973:  (ワッチョイ 617b-8+ss) 2022/11/06(日)14:36 ID:OfQ8ymDc0(15/24) AAS
 >>971 
 ああそれが diff のデフォルト出力をさせない理由だな。 
 651から一周回ったが、なるほど色々状況は理解出来たよ。賛同はしないが。 
974(2):  (ワッチョイ debb-qVfh) 2022/11/06(日)14:45 ID:FBkt/oHG0(8/8) AAS
 >>972 
 だからお前の考えてるような作業履歴管理ツールじゃないんだから、あきらめて他所へ行け。 
 gitはパッチ管理ツール。そしてパッチは何時、誰が、何のために作成したかが重要情報なんだよ。それを管理してるんだよ。 
 ソースコードの保管するツールじゃねーぞ。 
975:  (ワッチョイ 617b-8+ss) 2022/11/06(日)14:49 ID:OfQ8ymDc0(16/24) AAS
 >>974 
 そこは違うんだな。 
 みんな結局自分でやるのも作るのも面倒だから、既に動いてるツールを使ってるだけだよ。 
 Gitの機能のサブセットで十分にカバー出来るのなら、Git使えばいいだけ。 
976:  (ワッチョイ 617b-8+ss) 2022/11/06(日)14:56 ID:OfQ8ymDc0(17/24) AAS
 >>974 
 だからな、前言ったように、ブッ込んでおけば後で取り出せるバケツでしかないんだよ。 
 そのバケツにゴテゴテ付いてるから難しそうだが、要らない機能は使わなければいいだけ。 
 ただ、履歴保持の範囲を知らずに使って、実は記録されていませんでは困るから、使う前に調べてる。 
977(2):  (ワッチョイ 515f-nsye) 2022/11/06(日)15:45 ID:o7v4FvnP0(1) AAS
 外部リンク:www.praha-inc.com 
  
 そもそもコミットメッセージは何のためにあるのでしょうか? 
  
 コミットログのうちコードの変更履歴には「コードをどのように変更したか」という情報が含まれていますが、「コードを何故変更したのか」という情報はコミットメッセージを読まないと分かりません。機能追加、バグ修正、パフォーマンスのためなど、変更した理由は様々なものが考えられます。 
  
 もちろんコードを変更した本人に聞けば変更した意図はわかると思いますが、変更した本人にいつでも聞ける状況であるとは限りません。 
  
 「何故コードを変更したのか」という情報が欲しい時のためにコミットメッセージが存在します。
省3
978:  (ワッチョイ 09e4-chQ5) 2022/11/06(日)15:52 ID:az1H5JFk0(3/7) AAS
 まあこいつは分散バージョン管理の難しさを理解できていない 
 一人でしかプログラム組んだことがないのだろう 
 gitのややこしいと感じる仕様のほとんどは分散リポジトリ管理に起因していて、分散リポジトリ管理の問題をできるだけ明示的にシンプルに解決しようという意図で設計されている 
979:  (ワッチョイ b114-pSqO) 2022/11/06(日)15:55 ID:JyiC8cnE0(5/6) AAS
 ほんとなぁ、POSIX原理主義だからユニケージだかUSP研究所だかしらんが 
 例のあいつも、バージョン管理のツールを、バックアップツールとしてしか考えてねぇ 
 だからとりあえずファイルを入れておけば差分はdiffで見れるだろとか 
 訳のわからんことを言い出す 
  
 ある時点とある時点の差を見たいんじゃねーんだよ 
 ある修正にどのような差分があるかを記録=コミットしたいわけで 
 その記録なしに差分だけみれても役に立たないっつーの
省1
980:  (ワッチョイ 09e4-chQ5) 2022/11/06(日)16:10 ID:az1H5JFk0(4/7) AAS
 「ブッ込んでおけば後で取り出せるバケツ」など言っているが、 
 必要とされていたのは内容を同期できる複数のバケツで、 
 なおかつバケツ同士が常にオンラインで通信しているわけではない 
 そういう問題に取り組んだ結果だ 
981:  (ワッチョイ 09e4-chQ5) 2022/11/06(日)16:12 ID:az1H5JFk0(5/7) AAS
 そういう魔法のバケツを生み出すために、ただのバケツならできることがgitでは制限されていたりもする 
 ユーザから見て不自由のない完全な魔法のバケツを生み出そうとしたプロジェクトは複雑すぎてことごとく失敗してきた 
982:  (ワッチョイ b114-pSqO) 2022/11/06(日)16:14 ID:JyiC8cnE0(6/6) AAS
 バケツの中に入っている袋詰めの塩や砂糖を、一つづつ取り出したいのであって 
  
 バケツの中に全部入ってるから、遠心分離機でも使って 
 取り出せばいいだろうじゃないんだよなw 
983:  (ワッチョイ 09e4-chQ5) 2022/11/06(日)16:36 ID:az1H5JFk0(6/7) AAS
 前スレは消費に1年半かかってるのに、このスレは半年ぐらいで終わりだな 
 次スレ立ててみるけど失敗したらゴメン 
984:  (ワッチョイ 09e4-chQ5) 2022/11/06(日)16:41 ID:az1H5JFk0(7/7) AAS
 次スレ 
 Git 19 
 2chスレ:tech 
985(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)19:18 ID:OfQ8ymDc0(18/24) AAS
 相変わらずお前ら盛大に勘違いしてるが、とりあえず、 
  
 × Gitはパッチ管理ツールである 
 ○ Gitはパッチ適用ツールである 
 ○ Gitはパッチ記録ツールである 
  
 としよう。管理は出来てない。何を管理すべきか分かってないから。 
 commitメッセージなんてただのラベルに過ぎない。 
986(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)19:19 ID:OfQ8ymDc0(19/24) AAS
 例えば今回俺が送った再現コード、あれはどこに配置されるのだ? 
 >>977の通り、「何故この変更を行ったのか」の完全情報がそこにある。 
 まさか捨てたりしないよな? 
  
 バグパッチに於いて、重要な物から順に、 
  
 1. そのバグを修正するコード 
 2. そのバグを再現するコード 
 :
省13
987:  (ワッチョイ 617b-8+ss) 2022/11/06(日)19:20 ID:OfQ8ymDc0(20/24) AAS
 こうなってないだろ。一回パッチ当てて動きました!満足です!じゃないんだよ。 
 繰り返すが、commitメッセジーをいくら丁寧に書いても意味無い。 
 再現コードに比べたら本当にゴミ以下。 
 逆に、再現コードに辿り着けるのなら、後はラベルが正しく付いてれば十分なんだ。 
 それ以上の情報は、commitメッセージのテキストではなく、 
 再現コードとバグ報告=完全情報を見た方がいいから。 
  
 で、GitHubはまあこれに近いよ。
省16
988(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)19:20 ID:OfQ8ymDc0(21/24) AAS
 ちなみにchromeの連中は気持ち悪いほどregressionテストしてるぞ。 
 本来は、ああするべきなんだろうよ。 
 regressionテスト自体はタダ(スクリプトで自動実行)だからね。 
  
 バグ「管理」というのなら、原因を究明して、少なくとも同じバグが出ないようにしないといけない。 
 それはcommitメッセージをいくら丁寧に詳細に書いても、達成出来るものではない。 
  
 分かりやすく言うとな、「体調管理」と言われれば、少なくとも同じ原因で風邪を引かないようにするだろ。 
 なら、「バグ管理」なら、最低限レビューしてregressionテストしないと駄目だよ。
省1
989:  (ワッチョイ ad14-pSqO) 2022/11/06(日)19:24 ID:VM2X6i580(1/6) AAS
 >>985 
 > commitメッセージなんてただのラベルに過ぎない。 
  
 その言葉からお前がわかってないのが明らかなんだけど? 
990:  (ワッチョイ ad14-pSqO) 2022/11/06(日)19:26 ID:VM2X6i580(2/6) AAS
 >>988 
 うん。だからそのchromeはここまで徹底してコミットを管理してる 
 それを見習え 
 外部リンク:github.com 
991:  (ワッチョイ ad14-pSqO) 2022/11/06(日)19:27 ID:VM2X6i580(3/6) AAS
 regressionする際にもコミットを管理するのは重要で 
 コミット単位で戻してテストする 
 動かないコードをコミットすることはない 
 お前みたいにテキストエディタで修正するたびにコミットとかしない 
992:  (ワッチョイ ad14-pSqO) 2022/11/06(日)19:28 ID:VM2X6i580(4/6) AAS
 なんでchromeのコミットメッセージが 
 こんなに詳しく書かれているのか、その理由を考えたら? 
993:  (ワッチョイ ad14-pSqO) 2022/11/06(日)19:32 ID:VM2X6i580(5/6) AAS
 バージョン管理はソースコードの変更履歴を管理するものなので 
 そこにバグ管理という別の概念を持ち出すのも頭悪い 
 バグ管理は別のツールでやれ 
994(2):  (ワッチョイ 515f-pSqO) 2022/11/06(日)19:55 ID:sj15aRfA0(3/4) AAS
 >>986 
 > 例えば今回俺が送った再現コード、あれはどこに配置されるのだ? 
 修正コミットのログから URL で辿れるようになるかな。 
 外部リンク:public-inbox.org 
995:  (ワッチョイ 617b-8+ss) 2022/11/06(日)20:08 ID:OfQ8ymDc0(22/24) AAS
 >>994 
 それは鯖に置いてるだけだろ。まあそれはそれで十分で、(この意味では最初のMLでも十分) 
 問題は、 
  
 1. .git上、つまりソースコード改変ツリーから簡単に辿れるよう、 
  commitメッセージにそのリンクは落とされている(落とされる予定)なのか? 
  そうじゃないと>>977が達成出来ないだろ。 
 2. そしてregressionテストパターンとして登録され、今後ずっと実行されるのか?
省9
996(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)20:11 ID:OfQ8ymDc0(23/24) AAS
 >>994 
 と思ったがすまん、見落とした。 
  
 > 修正コミットのログ 
  
 つまりこれ、コミットメッセージそのものなのか? 
 ちょっと確認したいんだが、どこ見ればいいんだ?GitのGitHubから? 
997(1):  (ワッチョイ 515f-pSqO) 2022/11/06(日)20:22 ID:sj15aRfA0(4/4) AAS
 >>996 
 そう。コミットメッセージを含めてML上でレビュー中。まだ本体リポジトリには入ってない。 
 挙がってるレビューコメントを受けてそのうち第2弾が投稿されて取り込まれるんじゃないかな。 
 君もソースコードの質が気になるなら修正を送ってくれていいんだよ。さぁさぁ。 
998(1):  (ワッチョイ 617b-8+ss) 2022/11/06(日)20:38 ID:OfQ8ymDc0(24/24) AAS
 >>997 
 つまりあれがそのままに近い状態で入るのか? 
 まあそれは見守るとして、本来はちゃんとラベルを付け替えないとまずい。 
  
 俺が送った段階では高い確率で「free忘れによるメモリリーク」と推定出来たが、 
 断定は出来なかったので、単に「メモリ食いすぎ」としてる。 
 だから、メモリリークだと「断定」出来た人が概略を書き直さないといけない。 
  
 が、まあ、これは多分為されるだろう。見守るよ。
省14
999:  (ワッチョイ ad14-pSqO) 2022/11/06(日)20:40 ID:VM2X6i580(6/6) AAS
 >>998 
 お前がちゃんとやれって言われるだけだよ 
 お前雑なんだよ。無能なのに張り切るな。空回りしてるぞw 
1000:  (ブーイモ MM96-1bV6) 2022/11/06(日)20:46 ID:wlljBD17M(1) AAS
 質問いいすか? 
1001(1): 1001  ID:Thread(1/2) AAS
 このスレッドは1000を超えました。 
 新しいスレッドを立ててください。  
life time: 197日 17時間 21分 4秒 
1002(1): 1002  ID:Thread(2/2) AAS
 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 
 運営にご協力お願いいたします。 
─────────────────── 
 《プレミアム会員の主な特典》 
 ★ 5ちゃんねる専用ブラウザからの広告除去 
 ★ 5ちゃんねるの過去ログを取得 
 ★ 書き込み規制の緩和
省7
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 2.272s*