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
2020/10/04(日) 08:12:16.77ID:5wda0t4r
ありがとうございます
ファイル等gitオブジェクトはSHA-1で格納されているらしいということまではわかったのですが
受信時にこれを使ってベリファイしてるんでしょうか
2020/10/04(日) 10:48:37.02ID:3uxVqkZ8
SHAで格納とかいう時点でエラーチェックについて全くわかっていない。
チェクサムかパリティビットから勉強しろ。
2020/10/04(日) 12:42:13.02ID:nJe3tBQ/
横だけど、同一性のためのチェックはSHA-1で、ってことでしょ。
2020/10/04(日) 13:06:56.18ID:q15OM1O2
いまファイルを編集中でコミットしたくないんですけど
別件で修正依頼が来たのでそれの修正をしてそれだけコミットし、編集してた状態に戻すまでのコマンドを1から教えてください
2020/10/04(日) 13:21:30.23ID:eUP8i5sY
git stashしとけば?
2020/10/04(日) 13:26:43.51ID:5wda0t4r
>>25
すみません書き方が悪かったです
SHAハッシュ値をフォルダ名とかファイル名にして格納してるという意味でした
詳しそうなのでgitが同一性の確認をどのように行っているのかご教示いただけませんか
2020/10/04(日) 13:37:46.47ID:So0YsnAr
>27
git stash save
他の作業
git stash apply

でもなコミットを忌避する理由は無い。
gitはコミットを編集できるから作業はとにかくブランチでやってバンバンコミットしてamendとかrebaseとかsquashとかresetする方が良い。
stashだって無名のブランチみたいなものだぞ。
31デフォルトの名無しさん
垢版 |
2020/10/04(日) 13:52:04.81ID:jSKQ3Llr
横からだけど
master で作業中
git stash save
他の作業 (branch B を造ったとして)
git stash apply
ここで master に戻るんじゃなくて B の続きでってどうするの?
2020/10/04(日) 13:59:36.00ID:HtAk7si2
>>29
SHAハッシュ値をフォルダ名とかファイル名にして格納するのだから、格納するときにチェックすればいいだろ
実際にチェックするタイミングは臨機応変だよ
新規ファイルをコミットするときにはそのファイルのハッシュ値でフォルダ名やファイル名決めるのだから自然と一致するし
ファイルを上流からfetchしてきたときはファイルと一緒にハッシュも一緒にダウンロードするだろうからそこでチェックできる
git fsck みたいなコマンドで手動で強制的にチェックすることもできる
2020/10/04(日) 14:07:50.26ID:HtAk7si2
>>31
stashのapplyやpopは、saveしたブランチでなくてもできるよ
必要ならマージしてくれるし、当然コンフリクトもする
2020/10/04(日) 14:15:56.74ID:q15OM1O2
stashですねありがとうございます
2020/10/04(日) 14:29:25.50ID:nJe3tBQ/
>>29
どのプロトコル使っても整合性チェックすると思う。もしかしたらGit Internalに書いてあるかもしれないけど、どうしてそれを思ったの?webブラウザ使ってるときにデータが欠けてるか気になる?
2020/10/04(日) 15:28:09.43ID:5wda0t4r
>>32
ありがとうございます参考になりました

>>35
本来の用途と違いますが簡易的なファイルバックアップ目的で使えるかなと思いまして
これだけ使われていてデータ化け等のトラブルを聞いたことがないので
何らかの同一性をチェックする仕組みがあることは予想できましたが具体的に仕組みを知っておきたかったのです
2020/10/04(日) 15:36:37.25ID:5wda0t4r
あとは自分でソースコード読んで調べます
お世話になりました
2020/10/04(日) 19:47:03.49ID:So0YsnAr
いやだからSHA-1が何か知っていれば十分。
gitのソースなんか常識的なことしかやってない。
2020/10/04(日) 22:04:42.04ID:WqOXUMr5
そもそも差分で保持していることすら理解できてなさそう
2020/10/04(日) 22:31:26.82ID:FgyAeY9b
くすくすwww
差分で保持してないのにwww
2020/10/04(日) 22:32:10.07ID:8xouqNX0
差分で保持?Subversionあたりと勘違いしてそう
2020/10/05(月) 11:01:00.98ID:R+LPJQHy
バイナリ弄くって中身を直接改竄したらどこで気付けるの?
githubにプッシュする段階で弾かれる?
2020/10/05(月) 15:29:49.38ID:kPCKvS0E
簡単に試してみると
status チェックしない
checkout チェックしない
diff チェックしない
clone チェックしない!
pull チェックする
fsck 当然チェックする
2020/10/05(月) 21:05:37.85ID:OHtuwbKT
すまん、SVNと勘違いしてた
スナップショットだったな
2020/10/05(月) 21:41:45.15ID:LYJbfvxo
ウソつけ。知らんかったんだろ。無知
2020/10/06(火) 04:17:10.72ID:puwXjnsl
無知の血
2020/10/06(火) 07:28:16.44ID:PK5YmJhg
>>43
チェックしたかどうやって調べたんですか?
2020/10/06(火) 08:57:57.90ID:BpxuehLI
>>47
status
エラーが出ない。改竄されて無いかのような結果を返す
checkout
エラーが出ない。改竄されたファイルをcheckoutできる
diff
エラーが出ない。改竄されたファイルとの差分が表示される
clone
エラーが出ない。改竄された状態のままクローンされる
2020/10/06(火) 10:05:38.72ID:d7vEF+ck
Git v2.29.0-rc0
2020/10/06(火) 22:52:44.68ID:PK5YmJhg
>>48
cloneでチェックしないのは驚き。
pullするまでわからないの?
pullとfsckはどんなエラーが出るんです?
pushはさすがにチェックするよな?リモートレポジトリ壊れちゃうぞ

ちなみにblobを改ざんしたんだよね?
treeやcommitと整合取れなくてエラーが出るってことなのかね?エラーはどこで検知されるんだろう。
2020/10/06(火) 23:05:14.47ID:X5ZmpUrM
>>50
blobのオブジェクトの中身を改竄
ファイル名のハッシュ値と中身が一致しない旨のエラーが出る
clone も pull も同じファイルシステム上で試して、pullだけエラーになった
ネットからのcloneならもしかしてエラーが出るかもね
2020/10/08(木) 12:02:31.68ID:j+llKJ1y
gitのコマンドで、ファイル毎のコミットハッシュを一括で取得するようなコマンドはありますか?
53デフォルトの名無しさん
垢版 |
2020/10/08(木) 12:30:19.52ID:6clXcWBV
git status
git log
2020/10/08(木) 14:21:22.99ID:OZqBP6fN
git rev-list ブランチ名 -- ファイル名
2020/10/10(土) 02:00:17.61ID:8jOg16nE
Git v2.29.0-rc1
2020/10/10(土) 12:26:46.20ID:8jOg16nE
Git v2.26でプロトコルバージョン2がデフォルト

Git v2.27でプロトコルバージョン2が非デフォルトに

Git v2.29でプロトコルバージョン2が再度デフォルトになる予定
2020/10/11(日) 14:13:58.25ID:x9hId16M
プロトコルバージョンが2になるとなにがよくなるんでしょうか?
2020/10/11(日) 17:40:18.92ID:da5/ZQBA
おそらくGitHub特有の相談になるんだけどここでいいかな?

全体としては公開リポジトリなんだけど
ある理由(ライセンス制限、期日まで非公開にしておきたいデータ等)により
特定のファイル(secret.txt)もしくはディレクトリ(SecretFiles/)のみ非公開にしたい。

・【必須】バージョン管理はしたい

・全体と非公開ファイルは一体であり、非公開ファイル単体では意味をなさない
・開発中は公開/非公開を意識したくない

こういうとき、どういう方法を取ることが多いでしょうか
2020/10/11(日) 17:53:58.19ID:S22AJs2K
>>58
非公開のファイルは別リポジトリに分離してgit submoduleで参照するのはどうだろう
2020/10/11(日) 21:09:04.26ID:da5/ZQBA
ありがとう
ただ、(必須条件ではないとはいえ)この2つが気になってる

> ・全体と非公開ファイルは一体であり、非公開ファイル単体では意味をなさない
> ・開発中は公開/非公開を意識したくない
61デフォルトの名無しさん
垢版 |
2020/10/12(月) 09:46:45.59ID:941JO02h
submodule に ++
2020/10/12(月) 11:49:56.98ID:ApaV09Eo
英語のフォーラムとかも漁ってみたけど
「submodule、ただしお前さんの開発のフローに合致するかどうかは知らん」
って感じみたいね

下手すると1ファイルだけのリポジトリとか
作る羽目になりそうだけど仕方ないか…

リポジトリ本体とサブモジュールでコミットの足並みをそろえたり
本体のコミット履歴にサブモジュールのそれを流し込んだり出来るものなのかしら?
2020/10/12(月) 12:54:08.38ID:y+TJqPrh
全部非公開にすればいいだけじゃん
2020/10/12(月) 16:03:23.63ID:GBBJSb2v
そもそも足並み揃えなきゃいけない理由がわからない
2つのリポジトリから取ってくるじゃダメなのか
65デフォルトの名無しさん
垢版 |
2020/10/12(月) 16:48:06.10ID:941JO02h
足並み揃ってることが大事なら
sub の方にバージョン番号も入れておいて
main の方は sub のバージョンが正しいかどうか確認して動作する構成にしたら医院で内科医
2020/10/13(火) 15:53:28.21ID:zm2TVnZX
>>64
ライブラリなり単独プロダクトなり論理的に分割できるものではなく
本来であれば他ファイルと一緒に管理するべきものって前提ね

具体的な方法はともかく
本リポジトリのコミットAのタイミングで、サブ内のファイルBが更新された
というのが追えるのが望ましいかなと

>>65
あー、なるほど
バージョン番号というよりはコミットハッシュのほうが良いかもしらん
やったことないけど多分自動化出来るだろうし
2020/10/15(木) 17:38:16.60ID:RP+ZsziE
Yahooとかamazonみたいな巨大なサイトって1つのリポジトリでWebサイトのソースコードを管理しているのでしょうか?
68デフォルトの名無しさん
垢版 |
2020/10/16(金) 09:51:57.07ID:jRO02CLT
GAFA: Google Apple Facebook Amazon

Yahoo Microsoft Twitter Mercari LINE
2020/10/16(金) 09:56:14.58ID:/oPP6urL
googleはgitじゃないけど1つのリポジトリで全てを管理してるんだよな
2020/10/16(金) 10:40:11.28ID:sTwFaRRk
googleの巨大リポジトリはgitを改造して作ってるんだろ。
っていうか、そのためにHamano氏が雇われてると予想してるんたが。
2020/10/20(火) 09:00:10.89ID:0w6H4pKm
Git v2.29.0
2020/10/22(木) 18:03:28.49ID:h6SgBXMb
lan内、複数人、全部windowsマシンの環境で、vssからgitにしようとしてまっす
結局、gitサーバーって必要なの不要なの
bareレポジトリを共有フォルダにすればいいだけでっすか
2020/10/22(木) 18:09:00.63ID:0JejC+sC
認証とLFS使わないならそれでOK
74デフォルトの名無しさん
垢版 |
2020/10/22(木) 18:34:07.73ID:vPWH9GQz
local で運用したいなら
git と ssh のみで ok
2020/10/22(木) 18:47:15.24ID:1w9ntcAE
共有しないならローカルだけでgitを使うのもいいよ。

文書作成とかローカルgit重宝するんだけど、あんまり流行らないよね。
2020/10/22(木) 22:44:35.80ID:u1CdkM8r
コードレビューしないなら別にホスティングいらないんじゃね
2020/10/22(木) 23:45:51.43ID:qmwOK+gO
文書ならSubversionの方が使いやすい
Gitはサブディレクトリをチェックアウトできないのが致命的
2020/10/22(木) 23:58:01.66ID:u1CdkM8r
>>77
何を言ってるんだ?
2020/10/23(金) 00:09:06.10ID:cH47mZYH
自然文書じゃマージしようないし、Gitの設計は根本的に当てはまらなくなるな
2020/10/23(金) 00:14:27.37ID:iZiZ6/Ki
>>77
これは恥ずかしい
2020/10/23(金) 00:30:18.55ID:/vE5pATu
どっちみちマージできないんだからロックした方がマシだわな
2020/10/23(金) 00:32:51.98ID:T9P26xlF
GitはWordExcelファイル管理してるとすぐにリポジトリ肥大化する問題もある
2020/10/23(金) 00:35:30.46ID:NHDIr2v+
LFS使えよ
2020/10/23(金) 00:44:21.72ID:T9P26xlF
ファイルサーバ的な使い方だと、フォルダ単位のアクセス制御とかファイルロックとかでSubversionが使いやすい
Gitみたいなスナップショットで管理する設計は大規模な非ソースコード管理には向かない
2020/10/23(金) 01:07:17.43ID:icJas7yX
>>79
章の追加とかマージできる
2020/10/23(金) 01:17:30.12ID:26o6b8cs
自然言語はプログラミング言語と違って構造化されてないからね
2020/10/23(金) 01:18:27.98ID:icJas7yX
自然言語は構造化されてないが
ドキュメントは構造化されてる
2020/10/23(金) 02:08:07.70ID:KW01KC0T
文章も markdown みたいなテキストベースで書いて git で管理すると極楽だよ
2020/10/23(金) 04:36:31.18ID:pqqT/mRf
日本語だとか英語使う以上どうにもならん
それよりも、markdownって糞面倒くさい
リストの先頭にスペース4個だ8個だ、1. 1. 1.でナンバリングとかいかれてる
リンク貼るのは面倒だし、テーブル書くのは悪夢だし、slackがmarkdown止めたのも納得
wiki記法でもasciidocとかマシな選択肢他にある
2020/10/23(金) 07:12:39.30ID:cSjOS+ch
フォーマットの良し悪しはどうでも良いよ
問題は普及してるかどうか
客先とかにメールで躊躇なく送れるフォーマットでないと使わない

gitで管理するためにテキストベースならありがたいが、優先度は低い
2020/10/23(金) 08:15:21.01ID:zGLjdRtI
>>90
pandoc で word に変換して送る
2020/10/23(金) 08:39:21.85ID:L0D/oeHA
>>91
それって、wordフォーマットで貰って加筆して送り返す場合も、元の書式が完全に再現されるの?
2020/10/23(金) 10:44:04.26ID:zGLjdRtI
pandoc での変換は word への一方通行だよ
2020/10/23(金) 14:14:34.98ID:EcqZ5lbk
「Git for Windows 2.29.0」が公開 〜セットアップ時にデフォルトブランチ名を設定可能
https://forest.watch.impress.co.jp/docs/news/1284871.html

「Git for Windows」ではこれに加え、“git init”コマンドで利用されるデフォルトのブランチ名をインストーラーで設定できるようになった。
「Git」の開発チームはデフォルトのブランチ名を従来の“master”から“main”に変更する意向で、「Git for Windows」もそれに追随する構えだ
2020/10/23(金) 14:37:03.75ID:icJas7yX
ぶっちゃけ日本人としてはmaster(ご主人様!)でもmainでも
どっちでもいいんだが、gitが変えるならmainでいいとして
masterとmainを同一視する機能作らないの?
エイリアスブランチとかいう名前にしてさ、どちらからでも同じようにpullできる
96デフォルトの名無しさん
垢版 |
2020/10/23(金) 17:08:42.32ID:2f10zgGH
sub : 私を差別するなニダ
2020/10/23(金) 22:17:05.16ID:doeYD091
>>95
エイリアスを作る意味がわからん
2020/10/23(金) 22:22:38.51ID:wyWaj77E
>>97
互換性が保たれる
各自好きなときに変更を入れられる
誰にも影響がない
2020/10/23(金) 22:27:37.90ID:doeYD091
え?何と何の互換性の話してんの?
2020/10/23(金) 22:35:42.31ID:wyWaj77E
ブランチなんだからブランチ操作のときの互換性に決まってんだろ
アホかw
2020/10/23(金) 23:36:08.41ID:djACLj6C
さっぱり目的がわからん
2020/10/23(金) 23:38:51.83ID:lrh9I9yc
mainにする必要を感じないユーザーは今後もmainを使い続ければいい
互換性の上で何も困らない
上司が新しいブランチをmainで作りやがったけどオレはmasterが慣れてるんだ!オレの快適のために便利機能を開発しないGitはクソ!とか言い出したら立派なクレーマー
2020/10/23(金) 23:40:11.79ID:lrh9I9yc
書き間違えた
×今後もmainを使い続ければいい
◯今後もmasterを使い続ければいい
2020/10/24(土) 01:13:36.48ID:FYql/e9F
gitは分散システムだって理解してるかな
2020/10/24(土) 05:51:47.10ID:AgT7KjTR
>>102-103
な?そういうときにmainとmasterがエイリアスの関係になってれば
問題は全く起きないやろ
2020/10/24(土) 07:10:13.82ID:xAXF6dpK
Git v2.29.1
2020/10/24(土) 08:23:49.45ID:sA8KI1Y+
>>105
誤字は訂正すりゃ済む話だろ
誤字の責任をGitに転嫁し始めたらお前と同じだが

自分が欲しいと思い付いたものは皆欲しいに違いないし
それを提供する大人は疑い無く奉仕すべきってのは子供の発想
2020/10/24(土) 09:59:23.62ID:+ehIbcux
まあエイリアス機能はもうあるけどな
https://git-scm.com/docs/git-symbolic-ref
2020/10/24(土) 12:14:42.80ID:AgT7KjTR
>>107
誤字の話なんかしてないけど、どっから持ってきた(笑)
2020/10/24(土) 20:00:28.27ID:ka1+W9k3
>>105
誤字の話じゃないとすると、「問題」ってどういう状況のことを言ってるの?
2020/10/24(土) 20:03:07.32ID:Am3cGdvz
> 上司が新しいブランチをmainで作りやがったけどオレはmasterが慣れてるんだ!

ここに決まってるだろ

エイリアスがあれば上司はmainを使えるし
オレはmasterを使える
何も意識せずにだ

問題解決
2020/10/24(土) 20:07:50.61ID:ka1+W9k3
>>111
リモート oritin/main に対してローカル master で作業すれば問題ないのでは?
2020/10/24(土) 20:08:10.41ID:ka1+W9k3
s/oritin/origin/
2020/10/24(土) 20:13:40.11ID:Am3cGdvz
>>112
だからその作業をユーザーにやらせるなってこと
2020/10/24(土) 20:44:46.75ID:ka1+W9k3
>>114
最初の1回だけでしょ?
・・・あー、リモートブランチ名省略して git push origin できるのは名前が同じ時だけか。
なるほどちょっと面倒になるね。

と思ったけど push.default を upstream にしとけば git push origin でいけそう。
https://git-scm.com/docs/git-config.html#Documentation/git-config.txt-pushdefault
2020/10/24(土) 22:19:50.17ID:8e/eI8m7
>>108
まあ確かにリリースブランチとか定期的に切り替えるときには便利だな
masterとmainの互換性はわからんけどw
2020/10/24(土) 22:22:52.42ID:8e/eI8m7
>>115
ブランチ名省略してgit push originなんて怖くてやったことないけど使う人いるのか?
2020/10/24(土) 22:24:20.50ID:DBFUFktv
>>117
ここにいるよ
119デフォルトの名無しさん
垢版 |
2020/10/25(日) 00:35:44.89ID:yof5oYiB
それはわたしのおいなりさんだ
2020/10/25(日) 09:05:03.86ID:pKb4q+q8
>>117
ここにもいるよ
2020/10/25(日) 11:53:45.18ID:KhHAp4C5
>>117
怖いのは無知だから。勉強すれば怖くないよ
俺はいつもgit pushだな。originも不要
122デフォルトの名無しさん
垢版 |
2020/10/25(日) 12:11:04.99ID:KvAimzX1
>>119
oretin
2020/10/25(日) 19:01:39.34ID:DshRNT9f
>>117
怖いなら-v ---dry-runでもつけてどうなるか確認してみるといいよ
2020/10/25(日) 20:31:14.35ID:hcHuBEQz
君のGit... ギットギトだね。。。
ほら。。。フォースプッシュ。。。
本番ブランチ。。。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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