Git 20

2024/02/15(木) 09:50:09.07ID:En27mXas0

ソースコード管理を行う分散型バージョン管理システム、Gitについて語ろう。

Git
http://git-scm.com/

◆関連サイト
Pro Git - Table of Contents
http://git-scm.com/book/ja
Git入門
http://www8.atwiki.jp/git_jp/

◆前スレ
Git 17
https://mevius.5ch.net/test/read.cgi/tech/1599016710/
Git 18
http://mevius.5ch.net/test/read.cgi/tech/1650651945/
Git 19
https://mevius.5ch.net/test/read.cgi/tech/1667720427/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2025/03/08(土) 00:55:57.26ID:f1gAdLsE0
ハッシュ値指定しない人は多分GitHub使ったことないんだと思う
2025/03/08(土) 11:24:47.06ID:lsvDMVeL0
Git v2.49.0-rc1
2025/03/08(土) 11:29:06.73ID:lsvDMVeL0
>>400
ChangeLogに以下の説明があり、Git3.0にむけてbreaking changeがある模様

* Following the procedure we established to introduce breaking
changes for Git 3.0, allow an early opt-in for removing support of
$GIT_DIR/branches/ and $GIT_DIR/remotes/ directories to configure
remotes.
2025/03/08(土) 12:22:24.00ID:kCgnTDtk0
githubで全然草生やせないんだけど
2025/03/09(日) 18:13:33.28ID:fe3LNf260
>>356
gitk 見ながら CLI 操作ってのが個人的には最強
2025/03/11(火) 10:16:27.19ID:gbyV8IdY0
Git v2.49.0-rc2
2025/03/15(土) 12:09:57.15ID:PGLL/72K0
Git v2.49.0
2025/04/08(火) 16:01:12.91ID:3wE3gtcN0
「Git」誕生から20周年を記念してリーナス・トーバルズ氏が開発初期の裏事情や使用頻度の高いコマンドなどを明かす
https://gigazine.net/news/20250408-git-20-years-linus-torvalds/
2025/04/09(水) 16:03:54.93ID:IrWwI/nb0
複数ファイル名を入力するときはGUIでポチポチ選択したい
2025/04/18(金) 20:54:17.74ID:pzk2UeIY0
10日で開発したL・トーバルズ氏も想定外?--「Git」誕生から20年、定番VCSの軌跡とその影響
ps://japan.zdnet.com/article/35231917/
409デフォルトの名無しさん (ブーイモ MM8f-utm5)
垢版 |
2025/04/27(日) 17:55:28.09ID:sTr1luuSM
このスレッドはLinux開発のGitの世界を語りだす気持ち悪い人間がいるから困る
2025/05/15(木) 13:14:12.18ID:UmAf9vRJ0
最新版で行ったバグ修正の部分だけを旧バージョンにも適用したい場合、チェリーピックを行うことになりますか?
その場合、ログの樹形図には、このコミットを持ってきたよという線は作られずに、別々の作業という表現になってしまいますか?
2025/05/15(木) 13:54:33.66ID:F0izL13m0
>>410
それであってるよ

直接 cherry-pick せずにバグ修正だけ入ったブランチを作ってそっちをマージという形にするやり方も一応あるけど大した違いはない
系統樹にはならないのでコミットログにどこから cherry-pick したかを残しておく(変なオプション使わなければ勝手に残るよ)
2025/05/15(木) 17:08:27.77ID:UmAf9vRJ0
>>411
ありがとうございます
旧バージョンのこういうメンテナンスは、チェリーピックを使っていくことになるのですね
2025/05/15(木) 17:42:53.69ID:F0izL13m0
>>412
親子関係にない(できない)間でのパッチの流用は cherry-pick でやるのが基本
git のコードの移動は(特殊なの除くと)merge, rebase, cherry-pick の3つだけ
逆に言うと cherry-pick は最重要3役のひとつ
2025/05/15(木) 18:00:11.34ID:eepuMYHW0
rebaseってcherry-pickの繰り返しと同じじゃねーの?
2025/05/15(木) 20:13:23.49ID:F0izL13m0
>>414
似てるけど違うよ、オプションにもよるけど
●rebase は今いるブランチを移動させる
○cherry-pick はよそのブランチからコピーしてくる
コピーとムーブの違い、方向も逆なので注意
あと cherry-pick も範囲指定で複数一度にコピーできるよ
2025/05/15(木) 20:20:09.57ID:eepuMYHW0
>>415
rebaseしても元のコミットは残ってるからmoveじゃないし
2025/05/15(木) 20:35:51.71ID:F0izL13m0
>>416
何言ってるわからん
ブランチを移動させたらもとのブランチはなくなる(ブランチに所属しなくなったコミットは後からガベコレで消される)
もちろん別の名前でブランチが残っていればそっちは移動してないのでコミットは消されない
2025/05/15(木) 21:36:14.90ID:eepuMYHW0
>>417
gitにコミットのmoveなんて概念ないでしょってこと
2025/05/15(木) 21:39:50.81ID:F0izL13m0
>>418
概念はある
実装が移動先にコピーして後から削除になってるだけ(主に undo 用にしばらく残してる
2025/05/15(木) 21:48:52.03ID:6KG6JIoe0
mergeもcherry-pickもrebaseも普通に新しいコミットを作る
そのコミットの作り方がユースケースに応じて3種類あるってだけのこと
421デフォルトの名無しさん (ワッチョイ 7f63-3auX)
垢版 |
2025/05/15(木) 22:25:09.18ID:AuSI2AJ/0
>>414
同じだよ
2025/05/15(木) 22:42:29.15ID:eepuMYHW0
>>419
だからハッシュ番号変わるんだからmoveじゃないって
自分でも元が残ってるって言ってんじゃん
その理解大丈夫?
2025/05/15(木) 23:05:28.17ID:F0izL13m0
>>422
コンピュータ技術ではコピーして元のを消すのもムーブいうんだよ IDとかアドレスが変わってもムーブって呼ぶの
知らなかったの? 勉強になって良かったな
2025/05/16(金) 00:59:49.81ID:9SpA05Ma0
円錐を横から見た人が三角だといい下から見た人が丸だというような構図ですね
人は争いをやめられないので滅ぼすしかないですね
2025/05/16(金) 01:36:29.34ID:b2vWvm610
>>423
そもそもコピーじゃないからな
コミットの内容は元とは完全に別物であり、差分だけが再現されている
勉強になって良かったな
2025/05/16(金) 08:05:25.71ID:D2sZkK900
>>425
幼稚園児か?
完全一致じゃないとコピーじゃないとか言いだしたらファイルコピーとかも所有者とか日付とかいろいろ変わるのコピーじゃなくなるぞ
git のは日付とか作者は変わらないのでまだ保存性高いぞ

cherry-pick と rebase が一緒なんて恥ずかしいこと言ったの話をそらしてごまかしたいんだろうけど無理がありすぎる
cherry-pick は元のが消えない、rebase は元のが消える、方向も逆、べつもの、あきらめろ
2025/05/16(金) 09:43:07.63ID:L+lmGGRS0
>>426
分かって言ってるのかどうか知らないけど、日付が変わるとかのレベルじゃなく、そもそも差分箇所以外は原理上全くの別物よ
変更内容のムーブというならまだしもコミットのムーブは流石に意味不明
2025/05/16(金) 10:35:41.49ID:D2sZkK900
>>427
誤魔化すな rebase と cherry-pick は別物、元が消える(ムーブ)のと、消えない(コピー)の違い
ここで言ってるのは元が消えるかどうか、完全一致とかの話題ではない
2025/05/16(金) 10:46:52.99ID:FmZiuEdw0
rebaseで元は消えないでしょおじいちゃん
2025/05/16(金) 10:57:16.90ID:D2sZkK900
>>429
もしかして誤魔化してるじゃなくて本当に分かってないの? マジ?
431デフォルトの名無しさん (スップ Sd1f-/14X)
垢版 |
2025/05/16(金) 10:59:28.32ID:iN5covy8d
まあ公式が同じだって言ってるしなあ
2025/05/16(金) 11:09:39.47ID:D2sZkK900
0┳A━B
┗X━Y

0━A━B━X━Y
にする時に使うのが rebase
0┳A━B━X━Y
┗X━Y
にする時に使うのが cherry-pick
基本中の基本
2025/05/16(金) 11:30:53.42ID:9SpA05Ma0
いやどう考えてもそのレベルの話は全員わかってるやろ
この一連のやり取りに足りないのは知識でもIQでもなくEQ
お前ら小学生からリベースしろ
2025/05/16(金) 11:33:59.63ID:epkpTq3tM
>>430
rebaseはcherry-pickで新しいコミットが作られてそっちに単なるポインタであるブランチが移動したのと同等
コミット消すとか移動とかいう動作は含まれない
どこからも参照されなくなったらいずれgcで消えるってだけ
435デフォルトの名無しさん (ワッチョイ ffd6-Zxmy)
垢版 |
2025/05/16(金) 13:50:52.44ID:BDyQbzP90
英語が下手でコミットメッセージを書くのが苦手だったんだけど、AIで自動化したら快適になったぜ
2025/05/16(金) 14:44:19.53ID:x3RHmTCL0
>>435
そうなるともう、ログなんか書かなくていいんじゃないのとなってくるな
2025/05/16(金) 14:58:50.14ID:D2sZkK900
>>434
cherry-pick と rebase は別物って納得したんだな
2025/05/16(金) 15:09:24.62ID:D2sZkK900
rebase の内部動作の話するんなら
1. 分岐点を自動で探し出す
2. 分岐点からヘッドまでを対象の場所へ cherry-pick する
3. 元の場所のブランチ名を消す
4. 新しい場所にブランチ名をつける
5. ガベコレで古いブランチのコミットが消える
これを cherry-pick を繰り返すのと同じだと主張してる時点で何も分かってない
2025/05/16(金) 15:11:49.54ID:FmZiuEdw0
moveなんてアホな説明しなけりゃよかったのにね
2025/05/16(金) 15:18:53.26ID:D2sZkK900
>>439
移動してるだろ 432 見たら一目瞭然
コレが基本概念
内部実装の話しして誤魔化そうとしてても、お前が間抜けなこと言った時事は消えない
2025/05/16(金) 16:07:30.58ID:Jf7EmrNva
>>435
英語で直感的にヤバい時のメッセージに気付く訓練もいるから、AIは使えばいいけど読み書きの練習はしておけよ、と思った。
442デフォルトの名無しさん (ワッチョイ 7fc2-3auX)
垢版 |
2025/05/16(金) 18:15:56.05ID:Mw5Je42+0
とりあえずDt80は一度公式読んできなよ
たかが間違って覚えてたところで誰も煽りやしないよ
あと描いてたツリーで、XだのYだのをリベースなりチェリーピックなりしたやつはXダッシュとかYダッシュとかにしよう
そこだけ流石に同じ文字じゃ読んでてちょっと気持ち悪すぎる
2025/05/16(金) 18:36:45.50ID:D2sZkK900
>>442
今でも「rebase は cherry-pick を繰り返しただけ」と主張してるの?
そんな覚え違いしてるのお前だけだろ、この通りの文言があったらポインタ示してみろ

どっかの変なサイトが誤訳してるのなら知らんが rebase は cherry-pick してるだけじゃないことはお前も完全に理解できてるだろ
444デフォルトの名無しさん (スップ Sd1f-/14X)
垢版 |
2025/05/16(金) 21:29:57.00ID:iN5covy8d
このページのgit rebaseの項に書いてあるよ
https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Patching
2025/05/16(金) 23:12:54.87ID:D2sZkK900
>>444

どう訳したらそう誤解するんだ? 別物だというのは文章から明らかだろう

エスパーしてみると
違うからこそ basically ってわざわざ明確に書かれてるに、もしかして basically て単語知らなかったとか?
native のつかうbasically は「基本部分では、だいたいにおいて」みたいなニュアンスで、本当に同じ時には使わない
「だいたい同じ」を「同じ」って覚えてたんじゃないの?
2025/05/16(金) 23:28:45.03ID:CtDSSAzzH
>>445
さすがに苦しいぞ
2025/05/16(金) 23:33:35.97ID:D2sZkK900
>>446
でどう訳したの?
2025/05/17(土) 08:56:34.42ID:TogutASM0
方向の違いとかコピーとムーブの違いが「同じ」と「だいたい同じ」の違いというわけか。
2025/05/17(土) 09:18:39.88ID:S33C25YC0
間違いを絶対認めたくないマン
公式まで否定
2025/05/17(土) 17:33:51.01ID:t4AM4T1l0
>>449
あー、どう訳したか説明しないとこ見るとエスパーが図星なのか
公式が初心者向けに「ほぼ同じです、でもこういう点が違います。詳しい説明はこちらって」って書いてるのの最初のとこだけ見て「ほぼ」も見ないで、後に続く説明もリンク先の詳細も無視して同じって言い張ってただけか
それはお前の読解力が足りてないだけ、公式のせいじゃないぞ
451デフォルトの名無しさん (ワッチョイ 7f5e-3auX)
垢版 |
2025/05/17(土) 17:48:34.70ID:C8ddlcHs0
>>450
訳というかそもそもそのドキュメントは色んな言語版が用意されてて日本語のものもあるよ
訳が気になるなら読んでみよう
2025/05/17(土) 18:11:19.00ID:t4AM4T1l0
>>451
誤魔化してないで「お前が」同じだと主張する部分を説明してみろ
少なくともリンク先の英語の初心者向けの紹介には書いてないぞ
本当に同じならお前が cherry-pick で rebase 実装してみろ、そうすればみんな納得するだろう、技術者なら実際にやれば同じか別物か分かるだろう
git のソースコード読んだことないやつには想像もつかんだろうが rebase はかなり複雑なことをやってる、初心者向けのページすらまともに読み解けないお前には最初の1歩目の分岐点を探し出す作業ですら絶対に無理と予言しよう
2025/05/17(土) 20:46:35.58ID:S33C25YC0
そこで何か違うか端的に説明できたらよかったねおじいちゃん
何がmoveしてんですかぁ?
commitじゃなくてbranchのことですかぁ?
じゃcopyってどうゆうことですかぁ?
2025/05/17(土) 23:11:17.26ID:t4AM4T1l0
>>453
話逸らさずに同じとういうことを証明してみろ
細かい事いえば山程違いがあるけど、違うというのは 432 で素人にも一目瞭然なのに覆せるわけないだろう
間違えた恥ずかしい事実はごまかせないぞ
2025/05/17(土) 23:17:53.88ID:pDSuIsUc0
違いがあるというなら、あなたがコミットのコピー/ムーブと呼ぶものはどちらも実際には全く異なるコミットを作り出すでしょう
そういうのをダブスタという
2025/05/18(日) 00:30:50.11ID:t1q8u3yl0
>>455
読解力ないの日本語のなんだな
2025/05/18(日) 03:09:09.55ID:G2loPi6x0
なんて?
2025/05/19(月) 09:09:53.56ID:E91ALV1Y0
>>432
XY両方ではなく、XやYのみを取り込むのがcherry-pickというイメージだが
2025/05/19(月) 21:35:49.68ID:LwAOa5bv0
>>458
普通の範囲指定が効くので
その図なら git cherry-pick ..Y みたいに指定すれば X と Y の両方 cherry-pick できるよ
2025/05/20(火) 08:32:54.32ID:IobDhVYO0
会話が噛み合わないコントみたいなスレで草
みんな文意文脈にももっと気を配ろうぜ
2025/05/20(火) 15:48:18.98ID:iWs/HqBfa
「エクスプローラー」の「Git」統合などが実現へ ~Microsoftが開発者向け新機能
ps://forest.watch.impress.co.jp/docs/news/2015419.html
2025/05/20(火) 16:58:09.70ID:lxraH8Xn0
亀の出番がなくなるのか?
2025/05/21(水) 08:05:21.38ID:oZBirtTV0
エクスプローラーなんて、Windows7のときに使わなくなったな
2025/05/21(水) 10:18:53.96ID:va6/rMbaa
MSアカウントにログインしないとExoplorer使えないとか
もうWindows要らんな
2025/05/25(日) 03:59:20.13ID:5SaResX20
わざわざExplorerからコミットとかプッシュする奴おるんかw
2025/05/25(日) 07:06:19.26ID:EfROU4yga
OSのSystem領域も含めて全部がリモートリポジトリの運用かな。
2025/05/25(日) 08:49:46.44ID:JDhr0Ivk0
>>465
申し訳ありません、今でもTortoiseGitでやってます
2025/05/25(日) 09:13:50.01ID:TXvAFiBF0
Windowsだと、手取り足取り指示してあげないと自分で何もできない「開発者」をExcel方眼紙の手順書で「プログラミング」してあげるような仕事も多いから、
そういう場合に「開発者」の手元にいちいちGitクライアントを導入させるという頭悪い手順を記載する必要がなくなるなら便利かもしれない
2025/05/29(木) 02:32:23.75ID:oHIdrLSz0
Git v2.50.0-rc0
2025/06/04(水) 13:13:31.34ID:nhmcxHVz0
Git v2.50.0-rc1
471デフォルトの名無しさん (スッップ Sda2-in7m)
垢版 |
2025/06/06(金) 01:08:14.98ID:45aWa19td
gitもはや20年か
2025/06/07(土) 08:05:32.65ID:tgCEw1aU0
gitアレルギー
2025/06/10(火) 09:49:47.00ID:DFb9gzxN0
Git v2.50.0-rc2
2025/06/17(火) 08:04:33.42ID:JQTnqwjt0
Git v2.50.0
2025/06/18(水) 00:48:41.95ID:zWpFFB0D0
オススメのgitクライアント教えて
source treeはなんかuiの一つ一つがデカくて肌に合わなかった
2025/06/18(水) 02:39:03.14ID:QsB71xf70
自分はlazygitとVSCodeだな
2025/06/18(水) 08:16:55.75ID:6RiwAFGc0
うちではSourceTreeというやつを使ってるよ
2025/06/18(水) 09:02:23.67ID:7Ghn3yO50
使いにくいやつね
2025/06/18(水) 18:04:24.45ID:c2eS9NyS0
lazygitかSourcetreeだな。
2025/06/19(木) 20:10:05.29ID:dNWjhAfr0
わかばちゃんの中の人
ps://x.com/llminatoll/status/1935310637196095988?t=KJizsM3DHuYlJSyTCzcZcg&s=19
2025/06/21(土) 23:55:27.59ID:Rsg0aBc50
VSCodeの拡張機能で提供されてる Git Graphが 使いやすいね
2025/06/22(日) 00:39:02.97ID:L6Wg3CMhM
あれいいよね、見やすい
ハッシュ手打ちの人がんばってw
2025/06/22(日) 06:56:54.23ID:APGUbecj0
CUI でもハッシュを手打ちすることなんてほぼないだろ
ブランチもタグも検索も使ってないんだろうか?
2025/06/22(日) 18:51:38.68ID:4jZfNTw30
>>481
んー

でも、他のGitクライアントも似たもんじゃないの?
2025/06/23(月) 11:27:58.47ID:KosRMA640
似たような、がどの辺を指してるかにもよる。
rebaseかstash簡単にしたい、tag打ちたい、ブランチ作りたいならだいたいどれでも出来る。
 ただ現場で初心者多くて教育面倒だし日本語じゃなきゃだめとかいうなら、SourceTreeか
非公式多言語版GitHub Desktopしかないと思う。
2025/06/23(月) 12:06:20.95ID:9uUr9jSA0
>>485
で、ベストは?
英語でも有料でも、なんでもいいので
2025/06/23(月) 12:11:55.90ID:qqxmiRlS0
interactiveなrebaseをサポートできてないやつ多いでしょ
2025/06/23(月) 17:00:15.66ID:KosRMA640
基本は好きなの使えばいいよ。
対面レビューで追加コミット後に「レビューOKだからコミットひとつにまとめといて」って言われたり
「ウチは協力会社に外資いるから日本語コメントだめなんだ、英語にしといて」って言われない限り
rebase(やsquash)やamend使うこともないだろうし。
2025/06/23(月) 18:37:21.89ID:MPl++Mur0
いや rebase -i も --amend も使いまくりだろ
何なら一番多く使うコマンドまでありえる
一発で完璧な記録できて後は触らないみたいな超人じゃなきゃ、普通に多用するだろ
2025/06/23(月) 19:49:45.04ID:Z8z+4HFt0
といっても元のコミットがある程度ちゃんと作られてることが前提じゃない?
単に作業のチェックポイントとして気軽にコミットしてると、いざコードレビュー前に整理しようとしたときには元のコミットを無理に再利用するより
resetして作り直した方が早いことが個人的には多い
書いてて思ったけど、元のコミットがすでに整理されている上で修正を入れる状況としては、コードレビューの中での修正があるね
もしチームのポリシーとして瑣末な指摘反映をログに残さないことにしているなら、レビュー後マージ前にrebase -iするのは便利かもしれない
2025/06/23(月) 21:20:02.74ID:MPl++Mur0
そっちじゃなくて手元で色々作り散らかしたコミット履歴を綺麗に読み易く整理してから、レビューに出す。
順番入れ替えたり、コミットメッセージを分かり易くしたり、不要な履歴を消したり、コミットを意味に合わせて分割したり、統合したり
その整理に活躍するコマンドが rebase -i、慣れると手放せない

読み易く整理されてれば他人の時間の節約になる、試行錯誤とかタイポ修正とかの痕跡を他人に見せて時間を奪わなくてすむ
2025/06/23(月) 22:25:23.37ID:YcF93ZoT0
そんなの方法を議論する以前にもうAIにやらせたらいいんじゃないかという気もするが、
AIにやらせるならやっぱり一連のgitコマンドを直接生成させるのがいいのかなあ
コマンドだと人間が実行前にレビューするのは辛いものがあるから、diff入りのコミットログみたいな形式で生成させて、resetした上でそれを反映するのがいいと思うんだけど
2025/06/24(火) 07:59:57.08ID:oSvYVpQb0
>>492
AI に期待し杉
今のAIはしょせん賢い検索エンジンに過ぎない
学習したことの最も多数派の意見をそれらしく繋ぎ合わせてるに過ぎない
素人が玄人の作業を真似るのには使えるけど、玄人の創造的作業の代替は無理
2025/06/24(火) 08:31:50.93ID:1VpUD11F0
>>491
プロトタイプであれやこれやするなら、さらにブランチ作って動くようになったら新しいブランチに
Squash and Mergeして、そっちのブランチをレビュー対象にした方が楽なんじゃ?
2025/06/24(火) 10:30:20.42ID:oSvYVpQb0
>>494
いやだから、色々なブランチに順不同で入ってるやつの共通部分を括りだして独立したコミットにしたり、一つのコミットを内容に合わせて複数に分割したり、ばらばらのを分かり易く統合したり
やるべきこっとはいっぱいあるだろ
merge も squash も amend も全部 rebase -i を使ってやる、rebase -i を何だと思ってるんだ?
2025/06/26(木) 10:59:58.77ID:JcQLzuh60
amendやsquashを一般人が簡単にやりたいならGitHub Desktopの履歴のとこから出来るけど
使用説明が一切ないんだよなあ。圧倒的なドキュメント不足。
2025/06/26(木) 12:02:10.03ID:3juiMOaqM
>>495
アトミックに細かくコミットする人ならrebase -iでの整理は容易だろうけど、分割が多い場合は面倒臭すぎるでしょ
resetしてやり直した方が早いわ
2025/06/26(木) 14:45:21.20ID:rhHx6Nng0
>>497
意味分からん
「細かくコミット」と「分割が多い」は同じじゃないの? お前の用語での違いは何?

コミットを統合したり分割したりするのも rebase -i から始めるのに?
いくらでも変えられるのに何が問題なの?
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況