Git 17

■ このスレッドは過去ログ倉庫に格納されています
2020/09/02(水) 12:18:30.39ID:XN0SxNMq
ソースコード管理を行う分散型バージョン管理システム、Gitについて語ろう。

Git - Fast Version Control System
http://git-scm.com/

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

◆前スレ
Git 15
http://mevius.2ch.net/test/read.cgi/tech/1486239735/
Git 16©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1502726047/
-
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured
2021/01/05(火) 12:28:54.57ID:aNkjNIb3
試してみればいいだろ。どうせWindowsを叩くネタ探ししてるだけだろうけどなw
2021/01/05(火) 13:11:13.60ID:QCk77nSD
>>387
表示しないのは登録されている拡張子だけでは?
2021/01/06(水) 20:55:16.68ID:Td/kVwus
>>39
コミットはスナップショットであり差分ではない
https://github.blog/jp/2021-01-06-commits-are-snapshots-not-diffs/
2021/01/07(木) 00:39:52.75ID:EvYoYllB
もう許してやれよ
2021/01/07(木) 01:43:50.25ID:aTKj6syu
絶対に許せない
絶対にだ
2021/01/07(木) 02:19:08.21ID:KFrRp0zM
ゆるしてやったらどうや
2021/01/07(木) 04:30:00.53ID:34A7D4US
俺は許す。だが第二、第三の許さいないやつが登場するかもしれないがな!
2021/01/07(木) 04:30:26.54ID:34A7D4US
俺は許さへんけどなー
2021/01/07(木) 04:32:14.62ID:Rwr+/vV9
1000年恨み続けるぞ
2021/01/07(木) 04:35:29.84ID:6iGXQ2ZO
俺も許さへんけどなー
2021/01/07(木) 04:44:30.28ID:USu0TVaW
許すまじ>>39
2021/01/07(木) 08:44:09.61ID:ZQrukJD2
まあ使う分にはコミットがスナップショットでも差分でもどっちでもいいけどな

しかし、>>390でgitが過去のバージョン管理に比べて動作が速いのが納得できた
頭のいいやつの考えることは凄いわ
2021/01/07(木) 16:00:26.65ID:EQlW7mXe
まじめな話 git のコミットは思想的にはパッチセットだけどな。
古い rcs系はスナップショットとして管理して内部的には差分として保存。
gitは逆でパッチとして管理し内部的にはスナップショットとして保存。
この辺が技術的に面白いところだけど、混乱したりバカな記事書いたりするやつが多い。
2021/01/07(木) 21:43:05.24ID:fS2hw6z7
どういう意味?
〜で管理して…で保存、の前後が何を言ってるのかわからない
管理と保存の違いを詳しく教えてくれ
2021/01/07(木) 22:15:20.16ID:CAJlIzxl
はてブコメントを見てると勘違いしてる人が結構いるのがわかる
2021/01/08(金) 17:55:34.84ID:8WBrrTq7
gitがリビジョンを差分で管理してるみたいな勘違いは何年たっても減らないな
これとかもそうで、はてブとかでボロクソに言われて逆ギレしてるし
https://qiita.com/kaityo256/items/81e7951a1ca2706955a4
2021/01/08(金) 18:04:44.51ID:KooE4RYV
まあ確かに二重性はよく言われるところではあるよね
https://www.thirtythreeforty.net/posts/2020/01/the-wave-particle-duality-of-git-commits/
2021/01/08(金) 18:12:28.13ID:PqQGKODL
>>401
内部的にはスナップショットで持ってるけど、管理の単位(コマンドの操作対象)はパッチセット(差分集合)ってこと。
前者と後者の区別できないやつ(前者だけ主張するやつと後者だけ主張するやつと両方いる)が変な誤解が湧く原因。
stash とか例外はあるけど、内部実装の議論しないんなら git ではスナップショットとか忘れて良い。一方で内部実装からむならスナップショットが特徴。
2021/01/08(金) 18:33:01.34ID:0rHRhM/J
gitのコミットがスナップショットであるって基本原理を理解しておかないと、コミット間の差分比較が速いとか、リポジトリが肥大化するとか、svnの部分チェックアウトとか、gitの長所短所の理由を理解できない
2021/01/08(金) 19:26:51.55ID:PqQGKODL
長所の「理由」とか知ってる必要ある?
普通に使うだけなら理由は知らなくても結果の特徴だけ知ってれば十分。
ガソリンの燃焼の仕組み知らなくても車は運転できる。
技術者なら知っとけ損はないから、とは思うけど使う上で必須ではない。
それより内部実装と管理対象の混同の方が問題。嘘主張するくらいなら内部実装は忘れてもらった方が。
2021/01/08(金) 19:39:39.15ID:qqFAZEK4
管理の単位ってなんのことか知らんけど、git diffするにしたって、Git内部のどこかに差分ファイルがあってそれを表示してるんじゃなくて、スナップショット間でその都度差分作ってる
だからSubversionと違って、任意のコミット間、任意のブランチ間の差分も素早く作れる
逆にこのせいでSubversionに劣る機能もある
2021/01/08(金) 19:44:00.94ID:R5EtqfcI
そんでSubversionに劣る機能って?
2021/01/08(金) 20:44:22.53ID:gSC2W/4L
コミット毎にスナップショットを保存というのは、データサイズはやっぱりでかくなるん?
そのへんのトレードオフは割り切ってる感じなんかな?
2021/01/08(金) 20:50:30.68ID:gSC2W/4L
連レスごめん

個人用のメモとかのリポジトリでも、あんまり頻繁にコミットするのはデータ量増えてくだけだからよくなくて、
1日ごとの記録をまとめてコミットしたりとかの方がいいのかな

「コミットはドラクエのセーブみたいなもんだ」ってのを最初に見たから、なんか「こまめにセーブ」しちゃうんよね
プライベートリポジトリで
2021/01/08(金) 21:15:39.42ID:/3odlZSD
> 「コミットはドラクエのセーブみたいなもんだ」ってのを最初に見たから
それが本なら捨てたほうがいいレベル

バージョン管理というのは「バージョン」を管理するためのもの
バージョンというのは機能の違い

このバージョンで追加された機能、修正された機能はなんですか?
という質問に答えられないようなコミットは作ってはいけない
2021/01/08(金) 21:17:00.17ID:/3odlZSD
ここでいってるバージョンっていうのは1.0.0みたいな
公開用バージョンじゃなくて1コミット=1内部バージョンっていう意味な
リビジョンとも言う
2021/01/08(金) 21:19:32.15ID:/3odlZSD
困ってないのにデータ容量とか速度を気にするやつは
素人の証拠だろうな
2021/01/08(金) 21:20:19.55ID:gSC2W/4L
うん、パブリックな作業だとそうなんだろうけど、
プライベートで作業してるメモとかのリポジトリの話ね
2021/01/08(金) 21:23:23.78ID:iWK9k6TE
ローカルのメモフォルダはcronで自動コミット
2021/01/08(金) 21:33:17.87ID:gSC2W/4L
ちょっとググったら、コンセプトレベルだとスナップショットで保存してるという事になってるけど、
実際にデータストレージに格納する際は、普通にデルタで管理してるみたいね

https://stackoverflow.com/questions/8198105/how-does-git-store-files
2021/01/09(土) 00:02:47.37ID:W79PuS1T
>>410
内部で圧縮だとか重複排除だとのかの機能が働いてるのでテキストなら全く気にすんな。
変更箇所が小さいということは他のスナップショットとの間での重複が大きいので、その分圧縮がよく効いて結局小さくなる。

逆にいうと重複排除や圧縮の効かない画像や音声などのバイナリは小さくならないのでディスクを食いまくる。
2021/01/09(土) 04:27:19.29ID:OcYH4afG
肥大化するのは、Gitがブランチ作りまくって運用するって思想なのもある
DLLとかアセットを大量に扱いやすいゲーム開発でSubversionが好まれやすいのは、Subversionがバイナリーもデルタで管理するから
2021/01/09(土) 07:29:37.17ID:tLHsNmBf
ブランチ作りまくるのは、ブランチ作ったほうがいいから
gitだからブランチを作るのではない
作りたいから作るのだ

作りたいのにsubversionは面倒だから
作るのが億劫になる
2021/01/09(土) 09:07:49.24ID:HR4R//in
上にもあるけど、blob/tree/commitの違いを意識しないでスナップショット/差分の議論をしているから混乱するのかなと思った。
それと"パッチ"と"スナップショットでないもの"(=同じ内容を重複保存しない)も混ぜてるのも混乱の元だと思う
2021/01/09(土) 09:10:26.81ID:HR4R//in
gitはスナップショットと言っていいと思う。
blobは厳密にスナップショット。
tree, commitもスナップショット。ただし、すでに保存されているblob, treeがあるときはハードリンクする。

これでどうだ。
2021/01/09(土) 10:24:45.44ID:iPsMunau
とても分かりやすい
2021/01/09(土) 10:36:06.13ID:iPsMunau
BLOBが完全にスナップショットってことは
平均100バイトのソースを通算100万回変更してコピーが作られたとしても所詮100MB単位なので問題なしとして
100MBの神Excelを1000回コミットすると100GB肥大化しちゃう?
2021/01/09(土) 11:02:31.02ID:HMKT/ruy
GitのホスティングサービスってGitHubとかBacklogとかどこも1ファイル100MBまでとか全体で2GBまでとかに制限してるか、または推奨してる
Gitとしては巨大なリポジトリは分割して複数のリポジトリで管理するのを良しとしてる
2021/01/09(土) 11:06:21.25ID:HMKT/ruy
ただ、GoogleとかFacebookとかApache Foundationとか巨大なシングルリポジトリでソース管理してるとこも多くて、そういうとこじゃGitは使えない
2021/01/09(土) 11:20:38.94ID:VJN4kPsf
Androidはrepoという、沢山のgitレポジトリを集めたようなやつになってるよね。
でルートの.repoというディレクトリの下が結構でかくなる。何十GBとか。
2021/01/09(土) 13:01:58.11ID:GDFdV6+U
>>425
それgitの制限の話なの?
ホスティングサービスとしての容量制限じゃないの?
2021/01/09(土) 13:31:10.98ID:HMKT/ruy
それくらいがリポジトリ分割の目安ってこと
GitHubとかBitbucketとかたいていのプロジェクトで使うし
2021/01/09(土) 13:34:00.22ID:HMKT/ruy
Apacheはこんなことしてるし
https://svn.apache.org/viewvc/
2021/01/09(土) 13:54:10.37ID:GDFdV6+U
>>429
いや説明になってないけど
技術的にgitの限界というなら知りたいとこだが
2021/01/09(土) 13:58:13.20ID:HMKT/ruy
お前アホだろ
2021/01/09(土) 14:39:15.02ID:GDFdV6+U
説明できずに逆ギレとはテンプレみたいな奴だな
2021/01/09(土) 17:15:51.87ID:hICARDFL
バージョン管理システムはソースコードを管理するためのもので
差分見たり、ファイルの一部分を取り入れたりできなければ意味がない

100MBとかソースコード(テキスト形式)ではありえないようなサイズは
Git LFSを使ってファイルとして管理するのが推奨されてる
2021/01/10(日) 02:02:28.87ID:sWDDTlTI
>>417 >>422
このレベルの理解でドヤる奴が多いので混乱する

だいたい >>422 の理解でいいのだけど、
Packfile という仕組みで blob はスナップショットから別のblobとの差分へ変換される
この仕組みはコミット時に動くのではなくて、適当なタイミングで非同期的に行われる

ほぼ公式のこれ読んどけ
https://git-scm.com/book/ja/v2/Git%E3%81%AE%E5%86%85%E5%81%B4-Packfile
2021/01/10(日) 02:10:27.13ID:sWDDTlTI
>>422 のハードリンクというのは違うか、同じハッシュを参照するだけ
2021/01/10(日) 11:31:03.72ID:YtDhIn2G
>>435
コミット(というかインデックスファイル作るときなのでadd)したときにはスナップショットが作られる(記事内のlooseオブジェクト)けど、
gcで差分に変換される(=packfile)ってことか。勉強になるわ。
差分はどういうフォーマットなの?たぶんdiffではないよね?

あとハードリンクってのは概念的な類似(inode)から口走っちゃったけど、>>436のつもりです。ブランチと同じようにハッシュ向けるだけ。
438デフォルトの名無しさん
垢版 |
2021/01/10(日) 16:45:12.51ID:LeXF6f76
>>416だと保存しないとトリガーが発動しないから保存を忘れてしまえば効果が無いな
2021/01/13(水) 21:53:18.46ID:5+4LZxHe
一番最初のコミットしたファイルにパスワードが含まれるファイルがあるので
パスワードを空にしてそのコミットを修正する方法を教えてください
そのファイルは2回目以降にもぼちぼち編集してますが
パスワードの行は変更しておりません
2021/01/13(水) 21:55:13.38ID:CyYDkVRJ
やっちまったな
2021/01/14(木) 00:17:47.56ID:iLKd+C5M
>>439
BFG Repo-Cleanerを--replace-textオプションで実行
2021/01/16(土) 07:59:32.68ID:WJOhPj8J
Git って今、SHA-1 と SHA-256 どっち使ってるの?
2021/01/28(木) 07:56:37.51ID:acOoD31W
git switch と git branch があったら、git checkout ってもう使い所ないですか?
2021/01/29(金) 17:38:30.84ID:W6HglRhM
自分のHTMLやcssの履歴を残したいのでgitを使い始めたのですが、

コミット(B)した後に、1ファイルの1行だけ修正してからコミット(A)してしまって
前々回のコミット(B)に取り込んで、コミット(A)を消す事はできるのでしょうか?

コミット(B)をrebaseをしてintaractiveを選んだのですが、コミット(A)は消えず
変化もありませんでした、Visual Studio Codeを使用しています
2021/01/29(金) 20:11:30.08ID:1cLC2MqD
>>444
--> B --> A を
--> B'(B+A) にしたいってことですね。
interactiveを使おうとしているということはコマンドラインは使えますね。

git reset --soft @^ && git commit --amend です。
Aの先に既にコミットしている場合や、作業領域がダーティの場合は、このコマンドではダメなので言ってください。

慣れてないなら、コマンド実行前に git rev-parse @ で表示される文字列をメモっておいてください。
2021/01/30(土) 01:49:46.04ID:Z9V3r2RM
gitとgithubが似たような仕組みって昨日知ったわ
ありがとう
2021/01/30(土) 03:16:40.27ID:wITmTCC/
>>445
rebase用にファイルを用意してみたのですが、
rebaseテスト> git reset --soft @^ && git commit --amend
&&は前のコマンドが成功したら次のコマンドを実行するとは思いますが、

発生場所 行:1 文字:21
+ git reset --soft @^ && git commit --amend
トークン '&&' は、このバージョンでは有効なステートメント区切りではありません。
&&は対応していないようです。

前のコマンドだけ入力してもエラーでした。
rebaseテスト> git reset --soft @^
fatal: ambiguous argument 'g': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
2021/01/30(土) 10:49:06.16ID:T6Q7OQGL
最後のエラーが謎い…環境を教えて下さい。
・gitのバージョン
・コマンドラインを実行しているシェル(bashではない?)

git reset --soft HEAD^
これはどうなります?
2021/01/30(土) 17:01:38.99ID:wITmTCC/
>>448
Visual Studio Codeで動くpower shellだと思います
> git --version
git version 2.24.1.windows.2
でした。

> git reset --soft HEAD^
変化がありました!

自分のレスを引用していますが
>>コミット(B)した後に、1ファイルの1行だけ修正してからコミット(A)してしまって
コミット(A)が消えて、直前に戻ったという感じです。
コミットのアンドゥと言ったところでしょうか。

そのままもう1度同じコマンドを打つと、内容を保持したままコミット(B)が消えたので
そこでコミット(B')みたいな形ではやりたいことはできました。
VSCodeのResrt to Previous Commit -> --soft を押しても同じ結果になりました

2回soft resetをしてからコミットするという感じで目的は達成できそうですが
最初の目的であるrebaseが動かなかったのは何か条件があるのかな・・
2021/01/30(土) 20:10:04.60ID:zAPZPJfA
目的は果たせたようでよかったです。
powershellは分からないですが、たぶん@と^は使わないほうがいいんだろうと思います。
2021/01/31(日) 22:20:13.70ID:/8udhYNB
皆さんってGUIのGitツールって使います?
使っているとしたらオススメとかってありますか?
2021/01/31(日) 22:32:34.38ID:BL5bBvd/
GUI使うのはIDEのgit連携機能くらいですかね
Visual Studioとか
2021/02/01(月) 00:11:14.51ID:d6MK+BJR
SourceTree使ってるけど、バージョンアップで時々変なバグ入れてくるのでおすすめしない
2021/02/01(月) 08:42:59.22ID:oGcUiyuW
>>451
forkいいよ
2021/02/01(月) 08:57:39.78ID:9cKOvUYE
gitkでツリー確認して操作はコマンドラインだな。
2021/02/01(月) 09:26:55.28ID:oAaP+56S
TortoiseGitばっかり使ってる
エクスプローラとの連携が便利だからね、、
457451
垢版 |
2021/02/01(月) 12:25:02.13ID:1/QkvVEJ
皆さん、情報提供ありがとうございます。
参考にさせていただきます。
2021/02/01(月) 22:50:03.16ID:Q5Bso842
質問させて下さい。
開発の為に開発用branchを作り、開発が完了して、master branchにマージした後、その開発用branchは削除すべきなのでしょうか?
仮に削除するのだとすると、開発用branch内の履歴が消えてしまうような気がするのですが、なにか良い方法はありますか?


よろしくお願いいたします。
2021/02/01(月) 23:09:13.83ID:36GZ1lkU
>>458
fast forward マージをした?

git log --oneline --decorate --graph --branches --tags --remotes

これを使ってみて
460デフォルトの名無しさん
垢版 |
2021/02/02(火) 12:15:14.88ID:9p26+m9e
>>451
git bashは一度起動させたらそのまま移動して使い回す
更新履歴見るときだけgitk呼んでる
操作自体はgit bash
過去の履歴が使えるので専用シェルは都合が良い
@win10
461デフォルトの名無しさん
垢版 |
2021/02/02(火) 15:24:31.09ID:eTRsUHIh
git bash 便利だよね
2021/02/02(火) 20:41:40.26ID:5V0WMfsF
tig便利
元々Linux使ってたけどGit for Windowsに付いてくるようになって嬉しい
2021/02/02(火) 22:19:04.75ID:jeVYN25G
mingwのコマンドいっぱい入っているからcygwinがわりにもなるな。
464デフォルトの名無しさん
垢版 |
2021/02/04(木) 13:02:56.36ID:g2cSm/y9
http://to-developer.com/blog/?p=2103
2021/02/04(木) 13:07:15.43ID:4mrWh63N
git reset --soft <commit>

<commit> を省いた時の動作って、
git reset --soft HEAD
と同じ意味になる?
マニュアル見ても書いてないように思うんだけど

つまり、
git reset --soft
ってのは、reflog で見れる足跡情報が増えるだけで、
それ以外にはなんにもしないコマンドって理解でいいです?
2021/02/04(木) 13:41:04.22ID:tVJRdoUz
man git-reset の最初の何行か読めばそう書いてあるだろ
2021/02/04(木) 21:59:36.37ID:OLEUfSPw
The <tree-ish>/<commit> defaults to HEAD in all forms.
2021/02/08(月) 20:47:02.46ID:kPAwZcKm
Windows で開発してるうんkなんで、
git bash を VS Code で植え込んだ時におならが出るくらい感動した
2021/02/09(火) 00:42:35.94ID:n4fLaJzx
posh-gitも結構いいと思うんだ
2021/02/09(火) 09:55:22.35ID:dT3J9cd9
Git v2.30.1
2021/02/09(火) 12:33:58.63ID:eEK9etiv
powershell はコマンドが長ったらしいだけでもう無理
エイリアス設定できたとしてももう無理
なんか powershell 開いただけで蕁麻疹出る
2021/02/09(火) 12:47:44.22ID:Ulftf9cH
powershell強力過ぎ、めっちゃ使いやすい
2021/02/09(火) 17:18:41.08ID:eEK9etiv
>>472
ちょっとどこが良いのかその良さを bash とか zsh とかと比較して語ってみて
2021/02/09(火) 17:39:51.20ID:PJ1MEzpe
powershellは
bashやzshより使いやすい
2021/02/09(火) 17:51:57.49ID:/YXPJyUh
小学生のふわっとした紹介すこ
2021/02/09(火) 18:00:37.52ID:n4fLaJzx
すまん、プレステとサターンどっちが強いってイキってる小学生から成長してないやつがいるとは思わなかった
アレルギーって自分で分かってるんだから好きなの使えばいいのにね
2021/02/09(火) 22:46:56.83ID:2AhSCbDW
利点を教えてと言っただけなのに、何でどちらが強いとかイキってるとかの話になるんだ…
2021/02/10(水) 00:13:24.97ID:85OkvizX
無理、無理、蕁麻疹出ると畳み掛けた奴が「教えてと言っただけ」と嘯くか
こういう輩が被害者ぶってる様を見る方がよっぽど無理だわ
2021/02/10(水) 00:17:09.45ID:MZ8sANR+
Powershellは使いやすいのが利点かな
2021/02/10(水) 06:21:29.99ID:qX2MPAZ0
そういう喧嘩はどうでも良くて、
普通に powershell に利点があるなら知りたいだけなんだけど
自分は powershell 全然使い込んでないし
2021/02/10(水) 06:34:31.18ID:yu7Hf4No
>>480
PowerShellスレで聞けば?

PowerShell -Part 4
https://mevius.5ch.net/test/read.cgi/tech/1577862511/
2021/02/10(水) 10:25:14.26ID:qX2MPAZ0
>>481
教えてくれてありがとう
スレお気に入れてチェックだけはしといてみるよ
483デフォルトの名無しさん
垢版 |
2021/02/13(土) 21:10:04.34ID:k+FkZinH
PowerShellは.NET Frameworkが使えることが最大の利点。
それ以外のメリットがないのが最大の欠点。
2021/02/13(土) 22:49:51.40ID:a6ioYjOw
>>483
そういうのをやりたければPowerShellスレでやれ
git関係ないだろ
485デフォルトの名無しさん
垢版 |
2021/02/13(土) 23:43:26.18ID:8rFjwvle
マイクロソフトの影響が強まっているから仕方ない部分もある
486デフォルトの名無しさん
垢版 |
2021/02/14(日) 17:26:13.02ID:TODeHKxO
質問です
あるプロジェクトをgit cloneしてローカルでbuildしたのですけど、
その中で必要なSDLのソースが404でダウンロード出来なくて、中断する状況。
メンテナに聞いてみたら"update the git hash."とのこと。
「HASH更新するのね、了解」って思ったんですが、それってどうするの?状態です。
gitのオプション見ても適当なコマンドは見たらないし、cloneしてbuildする位しか
git自体使ってない程度なのでさっぱりさんです。
どなたか教えてください。
2021/02/14(日) 17:35:22.62ID:B5Xs3xes
そのプロジェクトを明かせばいいんじゃないかな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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