[過去ログ] Git 18 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
844(1): (ワッチョイ 09e4-chQ5) 2022/11/05(土)11:40 ID:zDjINlW+0(1/26) AAS
>>842
index-stageを理解してないおまえにはわからないかもしれないけど、
DBへ登録されるのはwork tree上のファイル丸ごとでない場合もあるし、
逆にDBからwork treeへ展開されるのもファイルの中の一部分の場合があるから、
そんな単純にはいかない
845(1): (ワッチョイ 09e4-chQ5) 2022/11/05(土)11:40 ID:zDjINlW+0(2/26) AAS
>>842
Windowsはアプリを実行する上でコード署名が必須でないから問題にならないだけ
846(1): (ワッチョイ 09e4-chQ5) 2022/11/05(土)11:41 ID:zDjINlW+0(3/26) AAS
>>843
gitのマージを全然理解できてないからブランチを復活させたいとか思ってしまうんだな
普段の運用でスクリプトを使ってブランチを復活させたいとか思う羽目になることはあまりない
ブランチがDBにおけるindexみたいなものとか、後から追加できる?みたいな疑問が生じるあたり、ブランチが何なのか全然わかってない
reflogの偽造が必要という発想もかなりズレてるし、>>814 をみるとコミットの履歴がどういうものなのか理解できていないのだろう
849: (ワッチョイ 09e4-chQ5) 2022/11/05(土)13:19 ID:zDjINlW+0(4/26) AAS
>>847
実際仕事すればわかるが add -Aで綺麗なコミットを作れるように整備されてるリポジトリはあまり無い
デバッグしながらコミットしていくときは add -p を使うことがとても多い
850: (ワッチョイ 09e4-chQ5) 2022/11/05(土)13:20 ID:zDjINlW+0(5/26) AAS
>>848
外部リンク:www.infoq.com
886(1): (ワッチョイ 09e4-chQ5) 2022/11/05(土)18:33 ID:zDjINlW+0(6/26) AAS
>>877
分散バージョン管理ではですね、リポジトリのコピーがばらばらに複数存在することが前提なので、
あるひとつのリポジトリのコミット履歴が A<-B<-C で、他のリポジトリではこれが A<-C になっているという状況は不味いんですよ
なのでGitではそれができないようにデータ構造が設計されています
902(2): (ワッチョイ 09e4-chQ5) 2022/11/05(土)19:21 ID:zDjINlW+0(7/26) AAS
>>898
まあもう面倒臭くなってきたので全部説明しちゃうが
結果的に親のhashが自分のhashに含まれることになるのだけど、実際には親のhashは自分のコミットオブジェクトに含まれている
その自分のコミットオブジェクトから計算して求めるのが自分のhash
親の祖先に変更があれば自分のコミットオブジェクトの作り直しになってhashも計算し直すことになりそれはもう自分ではない
ブランチの実体はコミットオブジェクトのハッシュひとつだけ
それで事足りる
省4
905(1): (ワッチョイ 09e4-chQ5) 2022/11/05(土)20:45 ID:zDjINlW+0(8/26) AAS
>>903
reflogのhashは、HEADが変わるような操作をしたときに、その操作の結果のHEADのhashを追記していくだけのログだよ
このログがその後のgitの動作に影響を与えることはない
HEAD@{0}が常に最新の操作に対応したhashに更新される
だからたとえばmasterとfirstという二つのブランチを交互にcheckoutすればこんな感じになる
$ git reflog
0956cde (HEAD -> first) HEAD@{0}: checkout: moving from master to first
省6
909(6): (ワッチョイ 09e4-chQ5) 2022/11/05(土)21:15 ID:zDjINlW+0(9/26) AAS
>>906
そのリポジトリがどういう構造になっているかわけわからん
git show-branch してみろ
916(1): (ワッチョイ 09e4-chQ5) 2022/11/05(土)22:05 ID:zDjINlW+0(10/26) AAS
>>911-915
これ全部FFマージやってるから結果的にdevelopブランチとmasterブランチが同じものになるぞ
917(1): (ワッチョイ 09e4-chQ5) 2022/11/05(土)22:09 ID:zDjINlW+0(11/26) AAS
mergeを全部merge --no-ffにするとマージした構造がわかるようになるし、最後にdevelopとmasterが別のものになる
どっちのマージにするかは現場の運用しだい
918: (ワッチョイ 09e4-chQ5) 2022/11/05(土)22:10 ID:zDjINlW+0(12/26) AAS
git log --graph --branches --oneline とかするとわかりやすい
920(1): (ワッチョイ 09e4-chQ5) 2022/11/05(土)22:22 ID:zDjINlW+0(13/26) AAS
HEAD~1と@{1}は全然関係無いよ?
HEAD~1は今のHEADの一番目の親のhash
親が複数いるときにはHEAD^1とかHEAD^2とかで指定する
@{1}はひとつ前の操作によってHEADになったhashだから、どういう操作したかで変わり、リポジトリの構造とは関係無い
921(1): (ワッチョイ 09e4-chQ5) 2022/11/05(土)22:30 ID:zDjINlW+0(14/26) AAS
>>914 で説明すると、
@{0}は最後のコミットで、FFマージした結果masterとdevelopがこのhash=1a804d9になった
@{1}はgit commit -m 'initial'の結果できた最初のコミット(最後のマージ操作の前のmaster)で、最後にこれにdevelopをマージするためcheckoutしたらこれになってる
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
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の履歴
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で比べてみればわかる
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 にするともっと面白いぞ
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
941: (ワッチョイ 09e4-chQ5) 2022/11/05(土)23:41 ID:zDjINlW+0(26/26) AAS
>>939がそう表示されるのは、--no-ff マージの手順が何か普通とちがうからかもしれん
>>939みたいに表示させるマージの手順もあるはずだから工夫してみるんだな
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.268s*