◎正当な理由による書き込みの削除について: 生島英之とみられる方へ:
Git 20 ->画像>1枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1707958209/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
detached HEAD で血の気が引いた。
元 hg 使いを殺しにきてるな。
もじら関連に関わるような変人以外にそんなの使ってる奴いるのか?
TortoiseGitって、メッセージは空っぽのままで注釈付きのタグを作ることはできないですか?
Git 2.46-rc0 Continues Preparations For Switching To SHA256 By Default WIth Git 3.0
https://www.phoronix.com/news/Git-2.46-rc0-Released すいません、質問です
とある組み込みLinuxのシステムをgit管理する事になりました
対象は/home/user1/の直下の3つのディレクトリです
この3つをディレクトリ構成を変えずに、同時にバージョン管理することは可能でしょうか?
その3ディレクトリ以外は管理対象外にするような.gitignoreを書くだけでは
>>17 homeのユーザーディレクトリを丸ごとリポジトリにしてしまってもいいのでしょうか?
>>18 だってuser1直下のディレクトリ構成変えるのが嫌なんでしょ
乱暴だとは思うけど割り切ってこうするしかないよ?
PCがブルスクになって再起動したら、.gitフォルダが全く認識されなくなったけど、これもう終わりかね
git initしてもダメだった
結局PCもgitも関係ないところのエラーだったんだろうな
今開発中の2.48は浜野氏がメンテナーをしていない模様
GitHubとかのパブリックリポジトリをクローンしてログを見てみると、
ブランチを作らずに複数人がmainにばんばんコミットしてるものも多いんだけど、
ブランチを作る作らないはどういう基準で分けてるんだろうか
>>36 ローカルにブランチ切ってるんじゃないの?
>>37 どうやったらmainをこんな一直線にできるんでしょうか?
ローカルのブランチをmainにマージするときに、リベースとか使ってるってことですか?
>>38 当然 rebase するだろう
git なんのために使うと思ってるんだ
fork して branch してその branch を fork 元の main に対して pull request
merge したら main に合流
じゃないの
>>41 直前にもう一回 pull / rebase してから pull request しろや
メンテナに余計な手間かけさせるな
>>36 がブランチ無いって言うから解説してみたんだが
gitでファイルを管理したいです
というのも、あるide上で削除したファイルは完全削除になり、ゴミ箱に移動されません
またリドゥも出来ません
だから定期的にgitに保存して、そこから復元という形になるみたいです
しかし、例えば10秒に1回ファイル削除をした場合10秒ごとにリポジトリに保存しなければいけないのでしょうか
自動化はできそうですが、凄まじく面倒です
何も難しくねーんだから自動化すれば良いだろ
凄まじく面倒なんて言い訳は頭が悪いことを自白しているようなもんだ
gitの用途間違えてるよ
高頻度で削除するようなファイルを復元したがるケースがまず不明
どのIDEでどんなプロジェクトをどう運用してるか説明したほうがいい
本当に実現したいことに対して手法が間違ってる気がする
Gitの使い方のルールが明文化されていない職場が増えた
職場でのルールってことでしょ
Git自体にルールはないよ
>>44 そんなに頻繁にファイル消すてどういうプロジェクトなんだろう?
削除せずに、ゴミ箱的なフォルダに移動するとか、ファイルをリネームするとかで
どうにかならないの?
git は履歴保管箱じゃねーぞ
変更点の採用/不採用や再利用や順番の入れ替えなどをする道具だぞ
履歴の保管はそのための単なる手段だぞ
ファイル保管の道具と勘違いしてるやつが多過ぎる、特に他の VCS から移ってきたやつ
>>51 彼はIDEとGitの二重管理がしたいらしいが、二重管理そのものが良くないと教えてやってよ。
>>52 それはGitではなく、GitHub、GitLabなどのGitのホスティングサービスのことだ。
チェックインチェックアウト型の方が合う職場の方が多いけどgit原理主義者がジャマをする
ファイルを弄ろうとした瞬間にダイアログが自動で開いて
お前は一体何のためにこのファイルを編集しようとしているんだ?
と意図を聞いてくるようなguiのgitクライアントやエディタってないの?
コミット時のコメントを先に書くようなの
やることを明確にしてから手を動かす癖をつけるには悪くないアイデアだと思う
しかし強制力がないと結局煩わしいだけで終わりそうだから、宣言した内容から逸れるような変更をAIが検知して電気ショックを与えるような仕組みとセットだな
基本的に git はコードを書いてから、それをどのように他人に見せるか考える仕組み
最初に目的を書くとか git ではありえない
他の VCS 使え、無理して git を使う必要ないぞ
ステージが何のためにあるのか分かんない奴、ステージの便利さが分かんない奴は他のを使った方が幸せだと思うぞ
そりゃ暴論だな
Git自体は開発ワークフローではなくソースコードを管理するツールだから、UNIX的ミニマリズムの帰結でそうなってるだけの話で、
開発ワークフローとして先にコミットメッセージを決めちゃいけないわけではない
そういうワークフローをサポートする周辺ツールを作ればいいだけのことで、それを妨げるものは何もない
GitにはSVNのneeds-lockに相当するものはない
開発のスループットを上げるためにロックの考えは省いて競合解決はなるべく機械に頼る
そのあたりの思想やポリシーはリーナスが語ってたはず
彼が自分のために作ったツールだからそのあたり色濃くコマンドに現れてる
だがフロントエンドの開発を妨げるものはなにもない
必要だと思ったやつが自分で作ればいい
Git自身の思想とは別ベクトルを向いているので特殊でマイナーな用途のうちに入るから巷で誰かが公開してくれている可能性は低いかもしれないな
git の思想合わないのなら git以外を使えば良いのになんで git にこだわるんだろ
git は汎用ニュートラルなツールじゃなくて思想性の強いクセがあるツール、その分はまったら手放せなくなるけど
料理で言ったらカレー粉レベル、カレー味にしたくない時に使うのはお勧めできない
>>67 ないよ、だから自分たちの手法/考えにあったやつを使うべき
有名だからといって git 向いてないやつが git 使うのは不幸になるだけ
git は素晴らしいツールだけど万人向けというわけではない
>>67 何にだって濃淡はあるだろ
あるなしの二択でしか考えられない1ビット脳かよ
>>69 濃淡といっても濃いやつかすごく濃いやつかの違い
薄いやつは存在しない
もちろん自分の思想にあってれば空気みたいに感じて薄いと思うかもだが、他の人にとっては猛毒という個人差
>>70 うん、だから
>>63 はGitはかなり濃い目の部類って言ってるんだよ
いやわかるんだけどさ、適材適所にならずにgitが一番、git使うのが正しい、gitも使えないような奴ぁ、みたいにいらぬ波風を仕事で起こす迷惑な原理主義者が実際多いのよ
たかがソースコードのバージョン管理に適材適所とか多様性とか要らん
くだらん自転車置き場の議論で時間を無駄にするだけだから問答無用でgit一択でいい
ゲーム開発で巨大なアセットを管理する必要があるように管理対象の性質によって他を選ぶのは仕方ないが、
些細なワークフローの問題で他の選択肢を検討するべきではない
>>73 git 使う理由を考えろ
お前みたいな変なのがいるから、git でロックしたいだの、事前にコミット・メッセージ入れたいだの的外れなこと言い出すやつが湧いくことになる
git 使うんなら git のワークフローになるし、他のワークフローにしたいのなら他の VCS 使うべき
(全部が一緒に見えるアホはどれ使っても駄目だが)
Gitのワークフローなんてものは無い
個人の小規模開発では、手元のフォルダ上でデフォルトブランチにコミットするだけの使い方も多い
GitHub使ったクローズドな組織での開発では単一のリモードリポジトリで作業する中央集権型のワークフローが普通だ
一方で、OSSではフォークして互いにpullし合うのが一般的だろう
素のGitにはレビューやコメントもなければCI/CDもなく、マージやデプロイを承認するような機能もない
それらはあくまでGitと直行するものとしてGitHubによって自然な形で実装されたものだ
GitはLinuxカーネル開発のワークフローを前提として設計されたものではあるがGitそれ自体はワークフロー中立であり、
多様な使い方を受容することがGitがこれだけ広く普及した大きな理由だ
svnはバイナリも差分で保存してくれることは覚えといて損はないぜ
脳死でgit一択なんてこたーない
>>76 よく読んでくれ
俺は管理対象の性質に応じて選択することは否定していない
>>75 もっと大きな部分を考えろ
分散して手元で開発
複数の人が同じファイルを並行して作業
ロックを取らずにマージ時に調整
ステージングでパッチを読みやすく整形
リベースでチェインを整形
個別ロックのかわりにブランチを使う
みたいなのも全部ワークフローだ
git 使ってると当たり前過ぎて空気になってるだけ、中央集権とかだけがワークフローじゃない
Q. バッティングするといやなのでロック取りたいんだが
A. ブランチ切れ、自分専用ブランチならバッティングしない
Q. 作業開始前に今からする作業の説明保存したいんだが
A. ブランチ切ってブランチの説明を追加しろ
だいたい git のワークフローに適した代替のやり方がある
個人ごとで保管すべきものが何で、全員で共有すべきものは何か? という根幹の考え方が VCS ごとに違っている
だからそういう話だろ?
なんか勘違いをしているようだが、質問者はあくまでクライアントの話をしている
自分の手元で自分以外誰も見ないし触らないブランチでやる分にはロックしようと自由だ
>>80 ロックは自由だ
LとR間違ってないか? 何のため誰のためのロックの話?
だから
>>57の通り、メッセージを先に書きたいだけでしょ
そもそもロックしたいとは言っていないが、実装するなら少なくとも手元のブランチに対する排他制御は必要だろうね
いやブランチじゃなくてリポジトリに対しての排他制御が必要か
コミット前だからどうせブランチは切り替えられないもんね
補足すると、自分で重複して同じクライアントを起動することによる競合を防ぐことを目的とした、同一PC上の同一のクライアント自身に対する排他制御な
ソースコードの履歴管理上の排他制御とリポジトリ内部の整合性を保証するための排他制御がごっちゃになってない?
なんでGitはおかしな原理主義者出てきやすいのだろう?
そりゃGitの~を使えばできます、は事実ですだろう
でも無理してなんでもかんでもGitでやる必要ないよなあ
どうも原理主義者くんはこの用途はこっちのバージョン管理ツールが合ってる、と言われるとGitにはその機能がない、と責められているように聞こえるらしい
git 以前にプログラミング向いてないやつがいるな
「ローカルでエディットしてるファイルを排他したいだけなら VCS じゃなくてエディタのロックの仕事」
って言われたら顔真っ赤にして反論するんだろうか?
git一択と言ってる奴いて草
これが原理主義か怖いねえ😱
日本人はやたら正解があることにしたがるが、外国人は正解が複数存在するという考えだから発展する。
>>85 > なんでGitはおかしな原理主義者出てきやすいのだろう?
馬鹿がイキるのに丁度良い複雑さだから
まともな人はコードに忙しくツールなんて出来るだけ疎かにするのもあって
>>90 思い出した。
専用のスレッド作ってもらっていて、2022/11/20だ。あれから2年か。
>>93 実行権限以外は管理されない、git は保存ツールやバックアップツールでなくてコラボツールなので読み書き権限の管理は不要
Windows 使いとかで実行権限がうまくいかない場合は core.filemode=true 設定とか、--chmod とオプションとかを使うと良い
>>93 なんかバックアップと勘違いしてる人多いよね。
複数のPCで使う前提なのにパーミッション管理して何したいの?って思う。
>>93 されないね 600の設定ファイルとかでよく出るGitのあるあるなんだけど設計思想なんでしょうがない
他のVCSには出来るものもあるんでそっちを検討するか、毎回シェルスクリプトを叩くか、置けるならGitのフックを使うか
それこそドットファイルの管理なんかでマージとかはあんまり考慮しなく出来るなら、rsyncみたいな世代バックアップのツール使ってもいいかも
perforceは出来るけどまああれだしな
後はそれこそRCSくらいしか思い浮かばないけど他になんかあったっけ
>>97 昔は、
新しいのは考え方や目的が違う、ファイル単位で読み書き権限の管理とかしたかったら今まで通りRCSとかCVS使い続けろ
って言うのが常識だったんだが
>>96 >>97 なるほどありがとう
そういうことならスクリプトでやるかな
>>93 それはOSが管理しているのであって、ファイルそのものにそういう情報があるわけではない。
んなこと言ったらファイル名もいらないって話になっちゃうぞ。
ファイル名はinodeではなくデータだとかいうツッコミは無しな。それこそファイルシステムの実装の都合に過ぎないんだから。
Gitがパーミッションを扱わないのはLinuxカーネル開発のソース管理においてそれを必要としないからで、それ以上のこじつけは必要ない。
xlsxとかxmlとしてバージョン管理できないの?しなくて良いのかもしれんが
>>101 git 出てくる以前から svn とか他の分散型でも実行権限しか管理しないのが常識だったから linux kernel のせいにするのは間違い
>>101 プレーンテキストにこのファイルの説明書が付いているという発想はなかなか思いつかないぞw
>>101 プレーンテキストにこのファイルの説明書が付いているという発想はなかなか思いつかないぞw
Windowsだってファイルにアクセス制御情報があるのではない。
DOSがディスクオペレーションシステムだと知っていれば、ファイルを管理しているのはOSで、ファイルがOSに指示しているという発想が出てくるはずがない。
必要な機能が欠けている、という事でしかないのでは。
実行権限だけ管理するというのもチグハグだし。
>>101 > それ以上のこじつけは必要ない。
完全に同意。
Git信者はGit一神教徒だから、Gitは間違ってない、間違わない、という前提で話をするからおかしくなる。
本当に間違ってないのであれば、更新する必要がない。ある意味CやHTMLがこれに近い。
Gitはツギハギだらけなんだから、パーミッションも今後は保存されるようになる、それの方が便利だから、というだけでよいのでは。
>>108 逆に git しか使ったことないやつがこういう戯言言うよな
最近のメジャーな VCS は実行権限しか管理しないのが普通なのに git 特有の仕様だと思い込んでる。git 以前からなのに
しかし教科書ではきれいにブランチだのフィックスだのと理想的なバージョン
管理が語られるが、会社でそれなりの規模になってくるとユーザーもいろいろだし
MSオフィスファイルや画像やとファイルの種別も多いのでほんとカオス化するなあ
もうやだ
>>106 だからその理屈だとgitが実行権限やファイル名を扱えることを説明できないでしょ
Linuxでは実行権限はメタデータだし、ファイル名はファイルではなくディレクトリのデータだ
Windowsではファイル名はアクセス権限と同等のメタデータの一つだね
>>112 それはGitの話ではなく、Gitの使い方の話だぜ?
>>112 ファイル名がパス名なのはUNIXの話でLinux独自の考えじゃない
>>112 「メタデータ」の意味を取り違えていますけど?
このスレッドはLinuxにおけるGitのスレッドじゃねえのにな
>>112 不毛だと思うが続けるつもりならシンボリックリンクを突いた方がいいのでは?
Gitに整合性なんて無いし、
Linusには不要だったから付いてないが、一般人には必要だから質問されるって事にしかならないと思うが
必要ならそのツールを使えばいいだけ。
GITではそんな機能はないと言うだけのこと。
随分ひどいが質の低いのが回答者側に回ってきてるのは悪いことなのかそれとも良いバロメータなのか
昔から専門系の板は簡単そうに見える質問が来ると極端な知識マウントで自己重要感を補おうとする人が湧くよ
今風に言うと「完全に理解した」人々ってやつ
検索したら出てきたから使っている人いるんだね。
自尊心と何が違うのかは知らんし、どうでもいいけど
他人の作ったツールでマウント取ろうとしてる時点で頭おかしいけどな
せめて「ぼくのすごいそふとうぇあ」でやれよと
(この意味ではQiitaは正しい)
それはさておき、
・実行環境の全てを保存したい→パーミッションも全部保持して欲しい
・ソースコードの変遷が辿れればいい→パーミッションは全部755でいい
実行権限のあり/なしで動作が変わるシェルスクリプトなんて普通作らんし、
(Git以前かららしいが)実行権限だけ保存するのはどういう理由なん?
>>123 多分だけど古くからの unix 文化の影響
ファイル所有者の読み書きの権限は無制限、ファイル所有者の実行権限は個々のファイルごとによって違うという使い方をするのが普通だった
分散型だと他人とかグループとかを管理する必要はない(そもそも所有者とか所有グループを管理してないので他人と所有者の区別がない)
結論として「実行権限」だけが残った
>>124 つまりデフォの644→手動で755に変更の履歴を残すのが目的だったと
なら750とか400とか使って真面目に管理してる連中には機能が足りないのだろうね
機能が足りないのなら追加すればいいだけの話
そこでGitは間違ってない、今後ともパーミッションが保存される事はない、他VCSもそうだし、とか考えるのは頭おかしいと思うぜ
>>125 そもそもバックアップはないのでファイルの所有者とかグループとかを保存管理してない
・つまり644だろうと666だろうと600だろうと違いがない、後ろの2つの数字は意味がない
・開発において所有者自身の読み書きを禁止する意味はない
という考えなので所有者の実行ビットのみくらうしか汎用的なユースケースが存在しない
みんなが役に立つ具体的な使い方思いつけば拡張されるかもしれないが、それを思いついたやつは今までいないので現状があると理解しろ
>>126 > それを思いついたやつは今までいないので現状があると理解しろ
それはお前が知らないだけ
ソースコード管理者≠実行者なのは普通にある
例えばapache等のWebサーバーはnobodyやothers等の低権限で動かすのが一般的だ
この場合は少なくとも自分とapacheの権限は独立して記録出来てないと不便だろ
そもそも今回の質問が発生するのも、また、
> 600の設定ファイルとかでよく出るGitのあるあるなんだけど設計思想なんでしょうがない (
>>96)
あるあるになるのもみんなその機能を使いたいからだろ
> そもそもバックアップはないのでファイルの所有者とかグループとかを保存管理してない
バックアップ程度で大半の人には十分だし、実際、デプロイしたらいきなり使える方が便利だろ
これを言うとデプロイツールでもないと言い出すんだろうが、
いちいちパーミッションを設定するだけのスクリプトを書いたり、手動で走らせるのは全くの無駄だろ(
>>96-99参考)
Git信者にはGitは間違ってない!としか思えないのだろうが、
俺は単純にパーミッションも保存すればもっと便利になるからそうすればいいだけだと考える
まあこの点は平行線なのでもういいが
とにかく今できないのは事実としてもね
というかね、このスレのGit信者にはパヨクや意識高い系馬鹿と同じ類の勘違いを感じる
>>127 もしそう思うなら具体的なユースケースをつけてコミットしろ
みんなの役に立つと思われば採用されるだろう
お前の役にしか立たんと思われればフォークして勝手にやれと言われるだけ
結果が全て、お前の妄想はいらない
git に限らずオープンソースというのは実際に手を動かして実物で利便性を証明したものの集大成
誰もやらないのは、やる価値がないから(コストに見合わないと思うから)
怠慢だと思うならお前がやって証明しろ
>>128-129 長期的には俺がフォークするかもだが、今はやらないよ
誰かがフォークしてパーミッションも保存するバージョンを作ったら、そっちを使うけど
(同じスタンスの奴も多いはず。そもそもGit以前のLinusも同様だし)
というかそこでムキになる理由が分からんのよ
お前がGitの基本設計をしたわけではないのだから、お前が間違った事にはならないし、
必要な機能なのだから、最終的には実装されるだろうし、なら付ければいいだけだろ
現実的には99のように自分でスクリプト等を『余分に』整備して我慢してる人が大半で、
いつか誰かがブチ切れて実装されるのを待ってるだけだろ
OSSなんてそんなに大した物でもないよ
(Gitに限らず、どれもこれも結構ポンコツ)
なお俺がGitにコミットする事はないぞ。やるなら必ずフォークする
理由はコマンドをほぼ全部リストラしたいから
「何で? 理由は?」ってお前が問うから
・unix の伝統的に必要性が低いから
・そのせいで今まで誰もやろとうとしなかったから
という今そうなってない理由を答えてやっただけ(理由を間違えてるなら指摘しろ
それがお前の需要を満たしてないと思うのならば、それは別問題、それはお前が変えろ
変えるのは自由、そっちは議論してない
>>131 お前らGit信者はOSSを勘違いしてて、
× OSSは自由に改変出来るので必要な機能は全て実装されている
○ OSSに実装されている機能は全て、
誰かがブチ切れて「こんなのやり続けるくらいなら俺が実装してやる!」となった結果であって、
当たり前だが不満は常に溜まった状態にあり、爆発ない限り何も改善しない
(不満があってブチ切れたとき、プロプライエタリでは使用を止めることしかできないが、
OSSなら自分で機能を付加するという選択肢もある、程度)
つまりGitに限らずOSSは完璧でもなく、足りない機能は普通にありまくりで、
Gitの場合はパーミッションがそうだ、というだけ
お前らがそこで、ムキー!!!ならお前が実装しろ!!!ってなるのも狂ってるよ
>>133 誰も git が完璧なんて言ってないが、今頃になって長文君論法は何故?
道具なので完璧である必要なんてそもそもない、自分が満足いく性能ならそれで良し
oss なんて情熱をもってそれを作る人がいるかとそれを使いたい人がいるかの論理積
存在しないのは作る人がいないか、使いたい人がいないかのどっちか
結果が全て、満足いかないなら、文句あったらお前が変えろの世界、それこそ気に要らなければ使わなくても良い
>>133 誰かが実装するまで不満は残ったままということだろ?
だから不満があるなら自分で実装すればいいと言われている
>>134 > 変えるのは自由、そっちは議論してない(131)
> 長文君論法は何故?(134)
それはお前がフォークしろ論法に逃げたから、俺はフォークしない理由を述べたまで
というか、元の話に戻すと、パーミッションが保存されない件について、
あるある質問者: 保存して欲しい、或いは保存されるのが当然だと思ってたのに…
俺: 機能の不備で、いつか追加されるだろ
Git信者: 保存されないのが仕様だし、正しい!文句あるならGitを使うな!
或いはフォークしろ!フォークもしないのに文句言うな!
であって、これはもう平行線だからいいと既に127で言ったろ
その後お前がフォークガー論法(128-129)で論点逸らししてきたから、
俺もちょっとつき合ってみたら、逆に俺が論点逸らしした風に装うのだからGit信者は頭おかしい
論点を逸らしたのはお前だぞ
(まあお前が議論慣れしてないだけかもしれんが)
とはいえこの話題についてはもう何も生産性無いし、やめでいいが
俺は 123 の最後にある「どういう理由?」に答えようとしただけで、それ以前の議論の回答はしてないぞ?
現状が気にいらないとう方向に話が逸れたのでそっちはコミットするなり勝手にしろといってるだけ
>大衆が望んでる機能
と言いながらそれを望んでいる人がどれくらいいるかというデータは示さない
「俺が望んでいるのだから皆望んでいるに決まってる!」と言ってるだけ
>>137 > それ以前の議論の回答はしてないぞ?
お前がそう思うのならそれでいいが、俺もお前の「パーミッションを保存しなかった理由の推定」には文句言ってないぞ
俺が突っ込んだのは、127で引用したとおり、
> それを思いついたやつは今までいない
なわけあるかボケ!であってね
というかむしろ、パーミッションも保存してくれると考える方が自然だ
既に言った通り、お前らはGitが正しいという前提で考えだすから話がおかしくなる
とはいえこの辺は本当に平行線なのでもういいよ
OSSなんてどれもマグマは溜まってる状態で、ある意味これが仕様だ
> 結果が全て(134)
これでいいよ
俺: いつか誰かが追加して、パーミッションも保存出来るようになるだろ
Git信者: Gitではパーミッションは保存されないのが正しいので、未来永劫この機能は付きません
で、どっちの予想が正しいか、結果で判断するのが正しい
そしてこれを現時点で結論づけるのは不可能なので、この話は終わりでいい
OSS なんて「仕様に文句言う暇があったら修正コード書け、コード書いてない時点で困ってない」と判断する修羅の世界
「その機能がない」=「今まではそれを入れる理由はなかった」なんだよ
未来は知らん、困ってるやつが頑張れ
>>139 この先ずっと実装されないままでも「俺は正しい」と言い続けるわけだ
>>140 × > 今まではそれを入れる理由はなかった
○ 我慢出来る範囲だったので我慢してた (130で言ったとおり)
なんだよ
というかお前のOSS最強信仰がどこから来るのか分からんが、
Gitに限らず何であれ、或いはプロプライエタリでも、
「ここもうちょっとなんとかならんかったんか」とは感じるものだと思うのだがな
ただまあ、中には、現状をひたすら受け入れるタイプも居て、君がそうだというだけなのかもしれんが
>>140 おっとすまん、見落とした
> OSS なんて「仕様に文句言う暇があったら修正コード書け
OSSは主語が大きすぎるので『Gitは』ということにして欲しいが、実際Gitではそうなのだろう
仕様を軽視しすぎだからあんなコマンドの山になる
とはいえ、これに関しては作った奴がそうなんだし、気に入らなければ使うなにしかならないが
>>142 「我慢出来る範囲」を超えたのなら実装すればいい
グダグダ言うだけで実装しない・できない奴ばかりならこの先もずっと変わらない
我慢できてる時点で困ってないんだよ
俺の git には(俺にしか役に立たない)パッチがいくつも当たってるけど、git に限らず OSS ってそういうもんだろ
他にも同じ問題で困っている人がいたら公開して共有するし、そうじゃなきゃ自分専用で使えばいい
>>145 > 我慢できてる時点で困ってないんだよ
なるほどそういう考え方か、全く同意はしないが
俺は逆に、93-99の流れの時点で駄目だと思うけどな(=困っていると判断する)
高い確率で、欲しい機能(または、あって当然と思ってる機能)が動かないから質問してるわけだし
手間を減らす為のツールなのに、手動で別スクリプト用意して管理が必要なのは、二度手間だし、アウトだよ
そして最初に仕様を練ってれば、つまり、
「本当にパーミッションは保存する必要ないのか?保存した場合に何か問題があるのか?」を熟慮してたら、回避出来た問題だという話さ
とはいえ、仕様を軽視する連中にはこの辺の話が全く通じないのもいつも通りではあるが
まあどこまで行っても平行線だし、合意する必要もないしで、もう終わりでいいよ
結果を待てばいい
>この話は終わりでいい
>もう終わりでいいよ
そう思うなら黙っていればいいのに
まだやってたんだ
なんでこんなことになってるんだ?
>>127 >バックアップ程度で大半の人には十分だし、実際、デプロイしたらいきなり使える方が便利だろ
だったらgitじゃなくてバックアップツールを使えばいいのでは?
誰もお前にgit使えなんて頼んでないし
パーミッションも記録するようになったらなったで今度は誰かがACLも入れてくれと言い出す
昔の状態を保存したい目的に使うのはバックアップツール、アーカイバとかでも良い
長文君といい今回といい、なんで git とかのバージョン・コントロール・ツールをバックアップと勘違いするやつが定期的に湧くんだろう?(同一人物が暴れてるだけ?)
このペンチでは釘が打てないと文句を言ってるレベルの無知さらけ出してるの気づいてないんだろか
>>154 そこが疑問になるのは、お前に一般化能力が全く足りないからだな
まあGit自体に一般化能力が皆無だから、Gitに不満がない奴等は一般化能力もかなり低めで、
この意味ではGitは一般化能力の低い連中のエコーチェンバーになってる
このスレもそう
並の一般化能力があれば、あの全く整理されてないコマンドの山を見れば発狂する、俺がそうだ
して本題だが、単純にバックアップツール/アーカイバとしても使えるからだ
例えばtgzして毎日保存して、必要ならコメントも付けて、必要ないファイルは除外して、重複してる部分は圧縮して、検索機能も付けて、…
とかやりだすとほぼVCSになる
鯖なしで単体アプリとして使えるVCSで一番目に付くのはGitになる
バックアップ=ブランチのない一本線コミット履歴、でしかないのでどのVCSも(一般人が期待する機能の)バックアップツール/アーカイバとしては使える
「別物」としてしか捉えられないのなら一般化能力が全く足りてない
(「勘違い」ではなく、分かってて「流用/転用」しようとしてるだけなのを、一般化能力が低すぎる故に理解出来ない)
Git信者風に言えば、「ぼくはいっぱんかのうりょくがかいむです」と言ってる事に気づいていないんだろうか、となる
ただなんつうか、この手の一々イヤミを言うのもお前らが嫌われてる理由だと思うんだけどさ
最後の文なんて意味不明な選民思想の露呈であって、しかも間違ってるしで、言わない方がましだよね
(まあリアルでは絶対に言わないがここは5chなので試しに言ってみる、というのならアリだが)
こいつの言ってるは「ペンチでも頑張ったら釘を打てるんだから、もっと釘打ち能力を強化しろ」ということだな
普通の人はペンチと金槌を使い分けるし、専門家なら用途ごとに複数のペンチや金槌を準備する
一つの道具で全部やろうとしてる時点でド素人だと気付けない病気かな?
言っていることはごもっともだが、一方で、ツール選定の際には使い慣れているものや既に運用されているものを優先するバイアスがあった方が効率的なのも事実だ
些細な課題に必要以上に固執してすぐに別のツールを使おうとするのも、それはそれで生産性を低下させる原因となる典型的な悪癖
もちろん上記のバイアスが強すぎるのも良くないけどね
双極性障害で、今が元気な期間で鬱に入ったら静かになるよ。
>>155 ブランチ使わねーとか、やっぱお前長文君だろ
開発どうなったんだ?
自分のスレに帰れ、完成まで戻って来んな
仮にパーミッション対応するにはどうしたらいいか、という生産的な議論はできんのか?
>>156 > 用途ごとに複数のペンチや金槌を準備する
ペンチや金槌ほど違いはないって事
ソフトウェア界隈でよく言われる、
「気に入らないからといってオレオレフレームワーク/ライブラリを作っても
どうせ9割は同じコードになるのだから、(=車輪の再開発でしかないので)
多少気に入らなくとも既存のフレームワーク/ライブラリを使え、その方が生産性が断然高い」が該当する
俺はGitを気に入らないが、かといって自分で作ったとしても9割は同じコードになるので、
わざわざ作り直すよりはそのまま使って、本来のアプリケーション開発に注力する方が全体的にマシ、ということ
コマンドが糞の山だが、基本コマンド以外は使わなければいいだけではあるので
その他てんこ盛りの機能も同様
まあ俺的にはタイプスタンプを保存して欲しいんですけどね
理由は一番分かりやすいから
でもLinusは何か知らんがこれは絶対に認めないんだろうしね
gitも再発明だろ
お前はひたすらやらない理由を考えるタイプ
>>160 Gitでやるなら
>>93-99 Gitを改造する気なら、commit時に何かしらのメタファイル(的なもの)を自動コミットしてしまって、
その中にパーミッションを記録しておき、戻すときに使えばいいだけ
まあ、やる気になればすぐ出来る問題だから、現時点で入ってないのは、
・本気で要らないと思ってる ← Git信者の予想
・まだブチ切れた奴が居ないだけ ← 俺の予想
・何かしらの理由で、政治的に拒否している ← Linusならあり得る
最後のは、例の発言
> マジで、Cを選択する理由が「何もなかった」としてもだ、C++プログラマー避けになるというだけで、Cを使う大義名分になる。
>
https://cpplover.blogspot.com/2013/05/linus-torvalsc.html なので、Git信者が喚き散らしてる「Gitをバックアップツールとして使わせない!!!」為に意図的にやってるってのは、
(半分ジョークだとしても、)Linusならあり得る
ファイルの中身の先頭にファイルそのものの属性情報を付けるという発想は、メインフレームなどの古い思想。
>>159 同意
長文君のスレ
日常の進捗履歴記録ツールWitBucket(仮称)検討中
http://2chb.net/r/tech/1668901194/ ごっみばけっつ君来てるのか
ばーじょん0.1でいいから早く成果物公開してや
長文君は問題外なので放っておくとして
unix 文化圏の KISS 原則というのは他の文化圏から来たやつには不思議でしょうがないんだろうな
Keep It Simple Stupid
「単純で馬鹿なままにしておけ = 余計なことはするな」
単純なものを組み合わせて何か複雑なものを作るのは簡単だけど、複雑なものを組み合わせるのは困難
お仕着せじゃなくて自分で工夫して何とかする人には元が単純であるほど良い
まあ使いやすくしたければ自分でツール作れば良いだけの話なのに何で作らないの?
必要なら作った方が効率がいいと思うんだけど。
元の質問者だけど、質問はただ出来るのかどうか聞いてただけなんだけどなあ
こうなって欲しいとかあるべきとか別に何とも思ってないんだが、なんで勝手に仮定してそんなに膨らませるんだろw
あとバックアップがどうのって言ってる人が最初の方からちらほらいるけど、バックアップの話ってどこから出してきたんだ?
誰もそんな話しとらんよね
Gitのことは嫌いでも、Linusのことは嫌いにならないでください!!
>>169 読んだら分かると思うけどこのスレには「git は初心者向けのバックアップ・ツールであるべき」というのが持論の変なやつが一人居着いていて定期的に湧くんだ
そして、ちょっとでもバックアップぽい使い方をしてるやつや初心者っぽい質問があると持論の補強に使おうとする
で、他の人がそれに反論したり予防するのが日常風景になってる
関係なければ軽く無視しても大丈夫だよ
>>167 GitはKISSとは真逆だけどな
>>169 手動でスクリプト書いてパーミッションを保存する気なのに、自分が使いたい機能と認識出来ないのは知障だろ
>>170 いやLinusの発言内容は大体同意だし、(163に挙げた物含めて)
ズバズバ言うところも割と俺は好きだけどな
もちろん会った事も話した事もないが
ただGitはなぁ…OSSの中でもここまで仕様がグダグダなのは存在しない
仕様を詰めるのは時間の無駄だ、として嫌う奴はいるが、大体そいつらはプログラミング初心者で、
Linusがこの辺理解出来無いとも思えないので、意図的に放置してる気もする
結果的にVCS界のmulticsになってるので、いつかunixが生まれる
ただまあ、使う分にはコマンドが多すぎても大して困らないんだよ、使わなければいいだけだから
しかしメンテするとなると、本来は全部のコマンドが正しく動く事をチェックしないといけないので、肥大化すると無理になってくる
Gitはこの辺、自動テストもする気無く、動かなければ動きませんね、文句があるならお前が直せ、でやってるように見える
また、勿論OSSなのでプロプライエタリと比べれば限界点は10~100倍上であり、
行けるところまで行ってしまえ、限界点のテストだ、という風にも取れる
この辺の思想が俺には合わないね、まあ他も多々あるが
だから、俺が参戦するとしたら、Gitではなく、unixを作る側だよ
そんなにGitが嫌なら使わなければいいのでは?
誰もお前にGit使えなんて言ってないでしょ
ゴミバケツ君また自分でVCS作る話してる。
前のはどうなったのか。
バージョン管理システムを変更履歴システムだと思い込んでいる人間は多いよなあ。
変更履歴用ならどこがどう変わったのかを表示する機能がないことに疑問を持たないのだろうか。
Linuxは開発者の質が低いんだよ
カーネルに次々と新しいバグを追加する
だからLinuxを採用するとカーネルを独自に直すという作業が必要になる
>>175 > 変更履歴用ならどこがどう変わったのかを表示する機能がないことに疑問を持たないのだろうか。
それはdiffで十分だし、しかもGitの場合はdiffを内包してしまってる(俺はこれにも反対)
だから不満があるとするならバイナリか?(Excel等を含む)
勿論これは対応してないだけだし、
また、対応するにしても、Gitが直接差分を出す「モノリシック」ではなく、
「プラグイン」で各社が自社アプリ用の差分出力ツールを供給出来る形態にするのが正しい
VCSから各種diffを直接出力すべきと考えるのは間違いだと思うぜ
>>176 そうだとしてもLinux以外にないわけだが、
> カーネルに次々と新しいバグを追加する
これはポリシーというか戦略が違ってて、「今より少しでも改善するなら採用」だからじゃないかと
従来型の「最低限のクオリティに達するまではreject」へのアンチテーゼでもあるから
そして(文句あるかもしれんが)カーネル開発者は元々のエンジニアの質がそこそこ高かったからそれでも何とかなったものの、
同じ事をGitでやったからあの「ぼくがおもいついたすごいこまんど」の山になったのだと思う
交通整理すらやる気無かったわけだ
とはいえ、「使われなくなったコマンドは、いつしか動かなくなった事すら認識されなくなり、死んでいく」という、
Gitコマンド内でのライフゲームをやるつもりなら、ありなんだろうさ
厳選されてるように思えるunixコマンドだって、レイヤーが1つ違うだけで同じライフゲーム状態だし
お前よりAIのほうが賢いんじゃね?
git を始めとして最近のVCSは著者(author)とか承認者(commiter)とかの由来を管理するけど、所有者(owner)とか所属グループ(group)とかの現状は管理しない
管理の粒度もファイル単位ではなくて変更点単位
「バックアップ」という言葉の使い方次第だが次元の違うものを管理してるというのは最低限の事前知識
GitHubを容量無制限のファイルバックアップ置き場として紹介しているサイトもあるけどな
>>161 タイムスタンプがそうなっている理由はプログラマならわかるかと。
makeとかのビルドシステムがファイル更新をタイムスタンプで判定しているんだから、gitが書き換えるごとにタイムスタンプが新しくなるのはビルドシステムを考慮したら当然の話。
タイムスタンプを勝手に書き戻したら再現困難なバグになるから、採用は無いだろうね。
自分もタイムスタンプは戻してほしい派
その手のビルドツールって、なんで「タイムスタンプが古くなってても更新扱い」にしてくれないの?
1バイトも更新せずにタイムスタンプだけ更新したら、それも記録すんの?
そのタイムスタンプ更新の著作権は誰に所属するの?
コミッタはそれを確認して承認作業するの?
古いパッチの再利用したら日付が昔に戻るの?
ブランチ統合したらどっちの日付が採用されるの?
アホらし過ぎる議論
ファイルのバックアップは別に取れ
>>169 今話してるのは質問がGitをバックアップに使ってると勘違いしてる人たちだから無視していいよ
他の人は
>>99でやりとりが終わってると分かってる
>>179 それは「現時点でもGitはバックアップツールとして十分使えます」と言ってるんだがお前はそれで良いのか?
>>182-183 つ make distclean
>>184 回答を期待してるわけではないだろうが、俺が今思いついた範囲なら、
1バイトも更新せずにタイムスタンプだけ更新したら、それも記録すんの?→古い日付のファイルに戻してからcommitしろ(或いは「内容が同一のファイルは非更新扱いにする」オプションをcommitコマンドに追加するからそれを使え)
そのタイムスタンプ更新の著作権は誰に所属するの?→上記なので関係なし
コミッタはそれを確認して承認作業するの?→同上
古いパッチの再利用したら日付が昔に戻るの?→パッチを当てた日になる、つまり戻らない
ブランチ統合したらどっちの日付が採用されるの?→マージ時に変更されたファイルはマージした日付になる
これで別段大して問題ない気がするが
まあ日付を保存する事について技術的問題はないと思うけど
Linusがわざわざ外したんだから、政治的な問題はあって、採用はされないんだろうけどさ
(全世界からメール等で連絡受けてたLinusは、テメエのローカルタイムなんて知るか!!!とブチ切れ、
タイプスタンプでの連絡が出来ないように作ったと予想)
が、多分根本は、形式主義者か現実主義者か、といったところか
形式主義者: GitはVCSであり、それ以外の使い方をしてはならない
現実主義者: 機能が揃ってればラベルがどうであれ使う
つまりGitもバックアップツールとして使えるし、
GitHubは容量無制限のファイル置き場だし、
git clone GitHubのURL: が現状一番簡単なデプロイ方法であるので、Gitはデプロイツールでもある
(ただし目的外流用だから色々機能が揃ってないが、それでも他ツールよりマシなら使うだけ)
>>186 開発者に「俺達の利便性のために、お前らはチェックアウトするごとに手動でcleanして一からビルドしろ」と言ったらさすがに傲慢かと。
gitはプログラム開発者がソースコード管理のために用意したツールだから、開発者にとって百害あって一利無しの機能が入ることは無いんじゃないんかね。
>>182 Subversionには、ファイルのタイムスタンプをコミット日時にする設定はあるけどな
もちろん、makeを使うような人には危険な機能だが、それなりの要望はあったのだろう
>>187 それはお前が傲慢すぎ
元々makeはインクリメンタルビルドの為のツールで、
Git以前からC界隈ではほぼ100%使われてたし、勿論Linusも使ってたはず
make clean; make distclean; は常識であり、知らない奴は死ねレベル
ただし通常はそもそも clean する必要がない
clean はだいたい rm *o だが、そもそも中間ファイル(*.o)は tar ボールには入ってないので、自分で make しない限り存在しない
だから「同一ディレクトリで『再度』makeしなおす」前に make clean であって、初回はやる必要がない
つまり「何度もビルドし直す」実際の開発者向けの機能であり
「ソースをダウンロードして一回ビルド成功したら終わり」のユーザーはどのみち clean なんてやる必要がないし、知らなくていい
これがGitの普及で毎回全部リビルドがデフォになっており、
君のように勘違いしてたり、あるいは makefile 内の clean が機能しなくなってる(メンテされてない)、という可能性はある
或いは、この辺の行き違いがLinuxで相当数発生し、『常に全部リビルド』するようにLinusが作った、という可能性もある
(Linus発言見てる限りは「タイムスタンプじゃなくてちゃんとコメント書けやボケ!」のように感じるが)
ただまあ、どのみちお前らのような、現状のGitに満足してる連中にはどうでもいい事だし、
俺ならタイプスタンプは戻すし、Gitにはコミットせずにフォークして勝手に作る
勿論気に入らなければ使うな、タイムスタンプ戻したければ勝手に使えだし
ただお前ら、繰り返すが
> それを思いついたやつは今までいない (126)
とか考えるのがとにかく傲慢すぎるんだよ
自分以外は超絶馬鹿としか思ってない奴しかこんな発言はできない
実際には、考えた上で、違う選択になってる
「タイムスタンプも保存した方がいいのでは」という提案を、これまで世界で誰も思いつかなかった、なんて事はあり得ない
Linus自身も最初から分かってて、敢えて落としてるんだよ
で、本来は、その落とした理由が分からないと地雷を踏むだけなので確認すべきなんだけども、
Git信者共はポジショントークを繰り返すだけでクソ使えねえ、
まあどのみちrejectされるのは分かり切ってるのでやるならフォークしかない、といったところ
何も分かってないやつがいて草
タイムスタンプは過去には戻らない未来に進むだけ、という前提で多くのツールが設計されてる make もそう
この前提を壊さないように配慮することが大原則で git のみならず unix 系のツールは設計されてる
バックアップからの復元はこの前提を壊して過去に時間を戻す行為なので特別な時にのみ使うもの
>>190 zipやtarは普通にタイムスタンプは保存されるだろ
その延長で考えるなら、保存された方が自然だし有用だ、というだけ
ただまあ、これも合意する必要はない
フォークしてどちらがウケるかで決するフォーク主義が正しいし、ユーザーは好きな方使えば済むだけ
(現実的にはcp -p と同様にオプションで切り替えるのが普通で、
逆に言えばオプションすら存在しないGitは何らかの「意図」をもってそうしてるとも言える
理由は今のところ不明なので思いつく人はよろしく)
まあ心配せずとも、Linuxカーネルにコミットしてくる連中で、make clean を知らない奴なんて一人もいないよ
(だから多分問題はここではない)
git pull した後に make clean とか git 使ったことないのが丸わかりだな
何のための make だよ?
>>189 「俺はタイムスタンプの管理をgitでやりたいから、お前らはチェックアウトするごとにmake dustclean しろ」と言ったら、温厚になったLinusでもさすがに罵倒するかと。
gitはLinusがlinuxのソースコードを管理するために作ったツール。今もメインユーザーはLinux開発者で想定利用シーンもLinux開発なんだから、「Linux開発者の足を引っ張る機能」を追加するのはディレクターの正気を疑うレベルですな。
>>194 いや linux とか Linus とかもはや関係なく全プログラマー大爆笑案件だろ
git pull で同期したら日付が過去に戻りましたとか全員が git の使用やめるレベル
https://stackoverflow.com/questions/1964470/whats-the-equivalent-of-subversions-use-commit-times-for-git PythonやPerlを使う人には、makeのためにタイムスタンプが失われるのはいい迷惑だと言われてるな
今さらリポジトリにメタデータを埋め込むのは難しいにしても、
gitconfigで
>>188くらいさせてくれてもいいのにとは思う
>>196 当然だが既に同じことを考えてパッチしてた奴が居たか
> Linus' rationale of timestamps being harmful just because it "confuses make" is lame:
189に書いたようにこれはないと思ってたが、マジだったとは
makeで問題になる場合って、
makeした同じディレクトリでより古いバージョンでソースを上書きしてcleanせずにmakeした場合、
に限られるのでLinus以外はほぼやらねえし、Linusがmakeの使い方知らんわけねえし、ねえわと思ってたが、
自分専用ツールだからカスタマイズ済みの感じか
とはいえ謎の地雷があるわけではなさそうというのは分かった、ありがとう
普通に考えれば、保存した上で戻す際にオプションで選べるようにしておけばいいだけなのだがな
この辺Gitは無駄に押し付けがましいのが意識高い系と被るし、
だからこそ連中とも親和性が高く、このスレにもそういう奴が多いのだろうけど
用途は考え方の違いで、(俺がそういう使い方をするわけではないが)
cron に commit させとけば、VCSはバックアップツールとしても使えて、
偶に過去バージョンにパッチ当てる際は branch すればいいのだから、
一本線しか許されないバックアップツールよりはソースコードのバックアップには向いているというだけ
ただHgなら保存されるのか?なら俺はそれでもいいんだが
(料理の腕前で勝負してるのに、整理棚に必要以上にこだわっても本末転倒)
料理の腕前で勝負してるつもりならさっさとWitBucketとやらを作れよ
>>197 >Linus以外はほぼやらねえし、
「gitはLinusがLinux開発で使うために作った」という大前提を忘れるのはアルツハイマー病の一種かしらん?
Gitの使い方というかSourcetreeの使い方というか質問があります
とある1コミットに複数ファイルがあって複数個所に変更がまたがってて
別ブランチにそのコミットの1ファイルの1部分だけをマージしたいです
その場合はチェリーピックは使えないので1部分のHunkをステージングに移動して
コミットするという方法が素直なマージ方法でしょうか?
>>201 採用元が push 後とか他人のコードだとそんな感じかな
私だと cherry-pick してから巻き戻し修正するけど、複数パッチなら rebase -i で edit を使う
採用元がローカルにしかない push 前なら元のコミットを分割しておくのが良い方法だろう
将来的に再利用するときにも別々に利用する可能性があるものは、今のうちに別パッチに分割しておくのが賢いと思う
>>202 回答ありがとうございます
まさに他人がプッシュしたものを派生ブランチにも適用させようとしています
その中に特定ブランチの対応分も混ぜてしまっていたため
どう対応すべきか質問した次第です
コミット分割は癖にしておきたいと思います
ろくに開発経験ないやつがgitの仕様はグダグダとか言ってるのまじで面白いな
>>93の質問以降まともだったのは96、97、99、101、107くらいしかいなかった
7bは置いとくとしても100レスも使ってこの体たらくとは情けない
>>178 diffでわざわざ比較するというのは時間の無駄
>>206 相手にすんな
バケツ君はマニュアル読めなくて git が外部 diff に対応してることすら見つけられずに俺の望む出力じゃないと散々暴れた過去がある、今もそう思い込んでるので
>>203 コミットの際にcherry-pickまで考慮するなんて不毛だからやめておいた方がいいよ
そんなことをしなければならないほど強くcherry-pickに依存したワークフローになっているならその方がよほど問題
不毛っていうのも程度問題でしょ
経験の浅いメンバーだと一つのコミットに複数のバグトラッカーのissueを混ぜこぜにすることがある
hot-fixブランチが必ずしも計画的に作られるとは限らないからcherry-pickで取り出したいことは時々起こる
cherry-pickに依存するのは不毛だと思うが、リモートへのコミットは機能単位・イシュー単位に整理した方がやり取り楽じゃない?
同じプロジェクト内に並行で製品(バージョン)を維持しているような場合には cherry-pick は多用するよ
特にブランチ切るまでもない単純な修正の場合とか
要はコミット1個だけのブランチの rebase/merge の簡略形なので不毛とか言うやつは単に経験が足りないだけ
せっかくbranch切ったのに、merge代わりにcherry-pickしたら後でトレース面倒にならん?
>>212 cherry-pick はブランチ切るまでもない修正用だよ
コミット1個ならどこから cherry-pick したか分かれば良いだけだし
将来どのコミットが急遽hotfixに採用されるか分からないからといってあらゆる事前の修正コミットをもしものためだけにブランチ分けするのもガチガチで作業効率が落ちる
程度問題と言った通り俺はcherry-pickを多用する気もないしフローとして禁止扱いも効率が悪いと思う
hotfixが必要ない現場なら必要になる機会は少ないだろうな
cherry-pick には複数の使いみちがあって別に全部の使い方しなければいけない訳ではないが色々知ってると便利
・最新版から過去リリースへのバックポート
・セキュリティなどの hotfix の適用
・テスト用の addhoc 修正版(正式なマージは今ではない
・ゴミ箱ブランチ等から拾ってコードの再利用(コードだけ拾ってコミットは再利用しない
など多数
「1つのコミットには1つの修正」という大原則を守ってさえいれば、cherry-pick に限らずあらゆる再利用や利用中止がやり易くなるといだけ
git の rebase と cherry-pick は同じ概念なので rebase とか使わない派閥のやつは cherry-pick も使わないだろうなあ
cherry-pick はブランチ切って rebase してブランチを消すを一発でやってくれるコマンド
正確には rebase の方が cherry-pick を繰り返した後にブランチ位置をそっちに切り替える機能というべきだけど
要はブランチを使うか使わないかの違い
すみません、チェリーピックに関して質問した者ですが
追加で質問よろしいでしょうか?
本流ブランチAから子ブランチBが作成されて
子ブランチBから一時的に孫ブランチCが作成されました
ブランチCで修正した一部コミットだけブランチBにチェリーピックしてマージして
他のコミットは無駄なのでブランチCがもはや不要となりました
孫ブランチCを削除してもブランチBにチェリーピックした内容は
削除される(元に戻される)ことはない認識で合っているでしょうか?
コミットの独立性が保たれているためチェリーピック元のブランチを
削除しても問題ないと認識しています
>>219 削除されないから大丈夫
まず第一に、残ったブランチやタグのいずれかから到達可能なコミットは生存し続ける
第二に、cherry-pickによって作られたコミットはマージと違って元のコミットとは別物の複製体になるので原本がどうなろうと知ったこっちゃない
>>221 ありがとうございます
Sourcetree独自の機能か分かりませんが
チェリーピック元のコミットIDをコメントに付与しているため
もう辿ることもないコミットならコメントから余計な情報は
省いた方がよさそうですね
>>222 それは git cherry-pick -x で付く情報だと思う
公開されないコミットへの参照は残さないほうがいいね
残ってても邪魔にはならないだろうけど cherry-pick 元がすぐ消える予定なら、付けないのが普通ですね
cherry pick
1. 都合の良いものだけを (恣意的に) 選び出す
2. 慎重に必要なものを選別する
2. 好きなもののみを摘み食いする
4. バーゲン品から掘り出しものを漁る
5. 木から熟したサクランボだけをもぎ取る
5が本来の使われ方、1の意味で使われることが多い
コミットする内容を複数に分けたい場合、必要な部分だけステージングすると読んだのですが、
この機能を使っても作業フォルダの内容は変化しないので、
一緒にコミットするべきだったところを入れ忘れてしまい、
プルしても正しく動かない状態のものを上げてしまっていたということがあります
この一発勝負みたいなステージングの機能をみんな使いこなしているのでしょうか?
>>228 一発勝負っていう感覚はおかしいでしょう
一度ステージングした後やコミットした後でプッシュするまでもいくらでも再確認とやり直しのチャンスがある
危うい操作をしたのに十分に確認していない内容をプッシュしてしまう習慣のほうがどちらかというと諸悪の根源だと思う
SVNだってローカルの変更を部分的にコミットしようと思えば同じようなリスクがあるので、ステージングという考え方自体のリスクではない
分割してコミットはビルドの通らないコミットを作ってしまうリスクは増すから不慣れで自信のないオペレーションになったときはstashやswitchを活用して疎通確認しておくとか、要らん変更と意図的に残した変更と漏れた変更を混同しないようにassume-unchangedやskip-worktreeなんかを活用してもいい
>>228 複数のコミットで一つの修正になるならrebase してまとめたら?
>>228 問に回答してなかった
ステージングの機能を使いこなしているかはNoです
差分確認からコミットまでの流れはGUIのほうが好きなのでステージングは全然活用できてない
>>229 git status とかを頻繁に打つくせをつけた方が良いぞ、それでコミットし忘れ防げる(ついでによく使うオプションは alias にするとさらに良いぞ)
あと正しく動かないコミットに分割するのは「必要な部分だけ」とは言わないぞ
>>228 もうでてるけど
いれないものはstashして動確してcommit
stagingの存在理由わかってくる
>>218 言うほど同じか?
rebaseを好む派閥がrebase使う最大のモチベーションはログの直線化
そういう神経質な連中がcherry-pickによる重複コミットの大量発生を許容するとは思えないのだが
やってることの内容は似てるけど用途が全然違うからなあ
かのPro Gitもリベースの章はベタ褒めでahhとかthe bliss of rebasingなどと顔もやや恍惚気味の御様子だが
チェリーピックとなると淡々とした説明で真顔だよ
>>236 目的じゃなくて動き(実装)の話
rebase で cherry-pick できるし
cherry-pick で rebase できる
どっちもコミットの再利用(付け先の変更)を目的とするコマンド
あと直線化にしか rebase 使わないと思ってるうちは git の実力が認識できてない
リポジトリを分けるか、モノでやるか
統合度合いが微妙な場合にものすごく悩む
そんなところで悩んでいる段階なら分けなくていいよ。最初から細かく分けようとするのは基本的に時間の無駄。
成功している組織はだいたいクソデカリポジトリなのも事実。それについては戦略としてモノレポが優れているというよりは結果的にそうなっただけだろうけど。
>>239 一般論にはメンバーで分けるとうまくいく事が多い
将来的に人が増えたり入れ替わっても同じ1つのグループで開発を続ける予定なら一緒にする、
対応するグループが分割されて片方だけに関わる人が出てきそう、もしくは不明なら別にしておく
「うまくいく」の定義によるかなあ
分かれている方が良いという前提のもとで失敗の可能性を下げるという意味では
>>241に同意するが、
個人的には不適切な分割による失敗は幾度も見たことがあるが、逆に一緒であることの直接的な実害にはあまり遭遇した経験がない
巨大なモノリスへと誘導されやすいみたいなアーキテクチャに対する影響は否定しないが、そのへんは日常的なコーディング作業というより
もっと大きな視点で恣意的に判断すべきことかと思う
そして、その判断を今すべきか、そもそも可能なのかは冷静に考えた方がいい
>>242 ・分かれてるものを一緒にするのはとても簡単だが、1つのものを分割するのはかなり手間がかかる
・単純なものどうしを組合わせるのは単純作業だが、複雑なものを組合わせるのは不可能な場合がある
という一般原則による、悩んだ時は原則に従うのがたいてい正しい
>>243 同様に、下記も言える
- 共通化されているものを個別化するのは簡単だが、個別化されているものを共通化するのは難しい
世の中そんなに単純じゃないんだわ
>>244 俺の書いた2つは、お前が書いた共通化の手間より断然難しいというのが一般的だと思うが、お前にとっては同レベルなんだろうなあ
まあ頑張れ
>>245 誤解させたようで申し訳ないが、単なるリポジトリの統合じゃなくてコードの共通化の話な
一般論として、集中管理は密結合を、分散管理は重複を招く
共通部分を介して密結合しているモジュール同士を切り離すには最悪共通部分をコピペすればよい
一方、分散管理され各所で個別化された重複を後から共通化する作業には、それほど自明な移行パスは存在しない
コードスタイルや設計の問題といえばそれだけだが、それはモノレポだって同じことだ
>>246 一般論だけどコードの共通化は難しくない
というのは必須ではないし時間の制限がないから
バラバラのまま結合して共通化できるところから時間をかけてゆっくり丁寧に共通部品に切り替えていけば良い
linux kernel とか部品の共通化に3年とか5年とかかけてゆっくりやってることも多い、共通化しないこともある
(手間だけの問題と技術的難易度の問題という本質的な部分の優先度を分けて考えると理解できると思うよ)
うーん、難しいと感じるかどうかはあなたの感性の問題だから、比較対象と根拠を示してね
>>248 感性の議論はしてないよ、お前がそう思ってるだけ
技術的にすぐに必要なものもと、条件によって無くてもすむし後回しにもできるものとを同次元で語るなって指摘なだけ
(後回しにして良いなら簡単、やらなくて済むのが一番簡単、という当たり前の指摘、感性の余地とかない)
>>249 読み返してみたけど
>>244のツッコミがまとも
お前は自分の意見が一般的と言い張ってるだけ
>>229-235 みなさんご意見どうもです
SVNを使っていた頃や、ステージングを使ってみる前は、
変更ファイルをいったんどこかに逃がして、作業フォルダを綺麗な状態に戻して、
今回コミットしたいところだけくっつけ直して、動作確認できたらそれらをすべてコミットして、
逃がしておいたものを元の場所に戻して作業再開、みたいな操作をしてました
結局プッシュする前にステージングし忘れなどを確認する必要があるとなると、
コミット時に確実に確認できる上記の方法もそんなに悪くはないってことですかね
>>251 それで良いんじゃないかな?
私だと2つに分けたのを両方先にコミットしておいて、両方別々にチェックアウトしてテストを走らせるけど
問題があれば巻き戻してやり直し
問題がなけば push
push 前ならローカルでいくらでもやり直しが効くのが git の利点なので個人的に分かりやすいやり方でやれば良い
慣れたらテストの自動化とか検討すると捗る
サル先生でGitの学習を始めました
そこで質問です!
下記コマンドの中に dewfr という記述が存在するのですが、これは何を意味するのでしょうか?
> git config --global core.editor "\"[使用するエディタのパス]\""dewfr
参照:
https://backlog.com/ja/git-tutorial/intro/06/ 先生が個人的に使っているエディタのファイル名なのでは?
直前がパス区切り文字で終わってるし
あ~なるほど!謎が解けました!
ありがとうございます!
Git用GUIがなまじっか日本語化されていると、
求めているコマンドを探すときに面倒くさい
Git for Windows 2.47.1(2)Latest
Git Credential Managerの脆弱性で
Git for Windows 2.47.1、2.46.2、2.45.2の各バージョンで差し替え
(日本時間2025-01-15 03:11)
ローカル上の作業ブランチで複数回コミットして、まだマージやプッシュをしたくない状態のとき、
ここでPCやSSDが壊れたら痛いのでローカルの内容をバックアップしておきたいとなったら、
どうやるのが常套手段なんでしょうか
常套手段は知らんけど壊れることまで心配するならクラウドバックアップとRAIDじゃないの
手軽な手段ならpushとpush -fだな
-fで困る人いないでしょ
汚すことができないやむを得ない事情があるなら自由になる別のリモートを増やしてブランチをミラーリングしておく
>>265 ・ディスクをレイドとかにして耐障害性を上げる
・ディスク/ファイルシステムのバックアップを取る
・バックアップ用の別のリモート・リポジトリにプッシュする
・共用リポジトリに別のブランチ名でプッシュしておく
どれでも好きなのをどうぞ
全部やれば完璧
(最後のなら簡単、運用ルール的にかぶらないブランチ名の付け方決めとくだけでOK、個人名_ブランチ名 とか
>>266-269 参考になりました、ありがとうございます
.gitフォルダだけを圧縮して逃がしたりしていましたが、
自分しか使わない前提のブランチなら、リモートにプッシュしてしまってもよいものなのですね
>>270 チームでやってるならチームのルールを確認
>>270 git のブランチなんていくら push しても容量がそんなに増えるようなもんじゃないし、邪魔にもならないんで駄目って言われることはほぼないよ
フィルターしやすくしたり、名前かぶるの避けるためにブランチの命名規則だけは決めておくと良い
(方針によってはバックアップは別のリポジトリがあるからそっち使えって言われることはあるかもしれない
>>265 ローカルにスタッシュする or 専用ブランにコミットした上で、.git以下を適当にバックアップするんじゃないの?
リモートに個人的なブランチをpushするのは抵抗感があるなぁ。
>>273 >>270で書いたような、今自分がやっている方法と同じですね
Gitの使い方としてどうかと思っていたのですが、それも間違いではないのですか
仕事でやってるならそれは個人的な作業ではないのだから堂々とリモートにpushすればよい
OSSならそもそもforkしてるだろうからリモートは元々自分専用
better cvs として使ってます。本当にすみません。 ブランチとか良く使わないです
やっぱりVisual Source Safeが一番わかりやすくていいよね
Better CVSではないGitならではのやり方と言えるのなんて、
複数のリモートリポジトリ間でpullし合うような真に分散管理された伝統的なOSS開発スタイルくらいだろ
基本的に大半の人の使い方はBetter CVSの域を出ない
ローカルリポジトリがリモートリポジトリへの反映前のバッファとして使えて便利だな、という程度
>>282 もうちょっと上手に煽んないと乗れないぞ
そもそもこのスレに cvs 使ったことあるやつがどれだけいると思ってんだ
30年前のアプリ比較に出しても自分が年寄りと表明することにしか
まちもに cvs 使ってたやつなら、恥ずかしくこの書き込みできないんで、きちんと使ったことないのまでは分かるけど
VSSもかなりあとまで使っていたけどな
35歳以上なら知っていることが多い
いまでもVisualStudioのソースコード管理はVSSライクなのあるよね。
Gitも使えるけど。
開発の中心じゃないメンバーも使う仕様書管理とかだとそっちの方が
評判高いというか、Gitは使わないよなw
Gitを知ろう!昔のソース管理とGit
の絵を見るとGitって難しい事してるな、って思う。
逆に古いツールは複雑なマージ出来るんだっけ?と不安になる。
Gitはオープンソースのプロジェクトを分散管理するのが目的だろうから、
社内のソース管理とかに使うと、なんか前より面倒くさくなったなと感じる
>>292 git は world wide にユニークな名前で管理して無限(おおげさな表現)にスケールすることが利点の1つなので
少人数のプロジェクトだとこの利点は感じ難いのは仕方ない、あらゆる利点は逆からみれば欠点なわけだし
git の他の利点、例えばブランチを切ったり繋いだりするのが早くて操作も簡単
みたいなのに慣れてくると個人利用のみでも手放せなくなる
正直、ローカルリポジトリを持たずに直接GitHubにコミットできるオプションがあったら便利だと思う
クライアントとサーバーが等価なのがアーキテクチャとして美しいのはわかるけど、
安定したネットワーク環境とリモートへの反映が前提なら実用的にはあまり意味ないのよね
余計な手間が増えるだけだし、作業者マインドの人(情シスとか情シスとか)に理解させるのに苦労する
最近のGitHubはweb上で編集してプルリク投げまで完結できたよね?
あんまし使ったことないけど
会社ではプッシュばっかり使っててプルリクの概念がいまだによくわかってない
このブランチをプルしてマージしてください ってお願いするのがプルリクなんだよね?
会社でこれをやるなら、ソース管理者みたいな人を立ててその人に依頼すんの?
君のチームのワークフローに合わせればいい。Gitだからどうとかじゃなく。
考え方は簡単、他者の承認またはレビューを必要とするときに pull request を作る、承認したらマージする、これだけ。
例えばタスク毎にメイン開発者AとレビュワーBがアサインされていて、リリースにオーナーCの承認を必要とするなら、下記が考えられる。
開発タスクのクローズ : AがタスクのブランチからmainブランチへのPRを作成し、Bにレビューを依頼。BがPRを承認し、AまたはBがマージ。
リリース : 開発チームの誰かが main から production ブランチへのPRを作成し、Cがマージ。その後GitHub Actions等のCI/CDツールが本番環境へデプロイする。
上記はよくある流れではあるが、GitやGitHubだからこうするというわけではないことに留意せよ。
開発フローはそれらとは独立に決められるべきであり、それをGitHubの機能を使って実装するだけだ。
>>298 ワークフロー次第だが、もともと想定されてるのは
個人用公開リポジトリ ←push― 個人用ローカルリポジトリ ←commit― 作業ディレクトリ
という環境を全員が持ってる前提で
プルリクエストというのは、「俺の公開リポジトリに push したので、そこからお前のリポジトリに pull してくれ」という要求
これを責任者宛に出せば
チームリーダーとかリリース・マネージャーとかの責任者がチェックして問題なければ、それを彼の個人ローカル・リポジトリでマージする(その後に彼の公開リポジトリに push して公開する)
企業での開発においては共通のリポジトリを皆で触るのが一般的であり、”pull” requestは実際には同一リポジトリ内でのマージのみに使用する
forkはガバナンスを困難にし情報漏洩につながるリスクがあるため、そもそもorganizationまたはenterpriseのポリシーで一律禁止するのがベストプラクティス
GitLabだとマージリクエストって名前なんだけど、個人的にはこっちの名の方がしっくり来るんだよなあ
リクエストだから向こうが主語だよ
何いってんのさ
どちらも依頼だけど取り込む段階に着目するかマージする段階に着目するかの違いだよ
pull ってのは 「fetch して merge 」の省略形なので当然 merge もリクエストしてる
分散リポジトリなら先に merge の前に fetch してもらう必要があるので pull リクエストを出す
共用リポジトリとかなら fetch する必要がないので単なる merge リクエストを出す
この違いが分かって使い分けできないやつが git 使ってるの爆笑ものなんだが
ここは分かってないやつ多そうだな
企業内での開発の場合、pull(merge) requestは要請というよりレビューと承認を求める意味合いが強い。
結局マージを行うのも同じ人(別の人間かもしれないが基本的には同一の責任主体と見做せる)であることがほとんどだから。
その意味ではシンプルに review request
企業内での開発の場合、pull(merge) requestはコードレビューと承認を得ることを目的に作成され、その上でマージを誰が行うかは重要ではないんだよね。
というか多くのチームでは作成した本人がマージしている。
このへんの用語は実際初心者に教えてると理解しづらいようで、pullじゃなくてmergeにしたら解決というものでもない。
まあ、だからってもっと良い呼称は俺は思いつかないが。
>>305 じゃあなんでGitLabはプルリクエストじゃなくてマージリクエストなの?
GitLabユーザーはfetchなんてしないのかしら?
しない。したとしても極めて稀。
OSS開発者のためのソーシャルコーディングサービスとして開発されたGitHubと異なり、
GitLabは当初からエンタープライズでのクローズドな開発を前提としており、
>>301の通り基本的に共有リポジトリを使うから。
>>307 それはちょっと違う
本来は review とかが全部終わった完成したものについて出すのが merge/pull リクエスト
review する人と merge する人が一緒の時に手抜きで一回で済ますだけでワークフロー上は完全に別物
>>311 使ったことがあるとは思えん
pull requestに対するレビュー結果の追加とマージの実行は別の操作だぞ
>>309 >>311 github は分散リポジトリを念頭にサーバ上の統合作業の用語を選択した
gitlab は共用リポジトリを念頭にサーバ上の統合作業の用語を選択した
これは本来の git の意図とはズレてるのでリーナスが切れた(サーバ上では統合作業 merge/pull しない、それらは手元のローカル・リポジトリでやるのが git 本来の流儀)
git で pull request はもともと相手のローカル・リポジトリへの pull を要求するというそのままの意味(github は用語を変に流用しただけ、本来の使い方ではない
linux kernel だと subsystem maintainer とかが subsystem の開発リポジトリから完成した分をリーナスの個人リポジトリに取り込んでリリースに含めるよう最終的な要求するのが pull request の意味
コードのレビューとかはもっとずっと前に ML とかで多くの人が議論し尽くしてる、そういうのが全部終わって次のバージョンのリリースに含めて良くなったら pull request 出す
>>314 で、あんたは
>>298が会社でGitHubのpull requestを活用するにあたってLinuxカーネルと同様のMLベースのプロセスを導入すべきだと言いたいのか?
でないならその情報は質問者にとってたんなるのいずだ
>>316 ここは GitHub スレではなくて git スレだ
git 本来の用法と用語があるんだ
GitHub の勝手用語を前提にしていない
>>316 > あんたはGitHubのpull requestを活用するにあって
俺に聞いてる? 俺のアドバイスなら
git 本来の pull request は業務フローによって必要だったり不要だったりする、参考に知っておくと良い
Github の pull request は使う必要も学ぶ必要もないゴミ、そのまま忘れてしまって良い、周りで使おうとするやついたら全力で止めるレベル
fork して勝手に成長させて fork 側が立派に育ったら
pull request なんてしなくても勝手に pull してくれるのが理想
>>319 いつ、誰が、何のために、どこから、どこへ pull すべきか指定するのが pull request なんだが
超絶AIでも開発してタイミングや理由を説明するのか? 誰がはどうする? 人間が AI から命令を受け取るのか? 責任者不明のコミットができる GitHub状態なのか?
楽し過ぎるな。それやるくらいなら多分AIに全部のプログラム書かせた方が早いと思うぞ
git stashで、新規のファイルも一時退避したいのですが、デフォだと無視されるようですね
何か方法はないでしょうか
ま、新規ファイルはgitに未登録だから放置プレイせよ、ということなのかもしれませんが
なんとなくスッキリしないというか
git add -A してから git stash
-u
こんなとこ書き込む暇あったらググるかAIに聞け
2月寒いなあ、まだ冬型続くのかな?
みたいな質問するのは挨拶、話題作り、ネタ提供で雑談のきっかけにしたいだけなのに
「そんなのはググって気象庁のサイトを調べろ」とか言われちゃう感じだよねw
>>326 みんなの集まる会議の席上で天気の質問とか始めたら、「さっさと始めろ、他人の時間を無駄にするな」って怒られるだろ
個人の雑談と、多数が集まる場所での発言は違うんじゃないかな?
他人の時間を無駄にしないために自分で調べられることは調べた上で、分からない部分があったら質問するのが人としての礼儀
はたから見た感想
質問者の「ま、~というか」っていう余計なくだりを書かなければ余計な苦言も返されなかったかもと思った
>>327 このスレに多数の人が集まってるって言えるの?
lud20250222143820このスレへの固定リンク: http://5chb.net/r/tech/1707958209/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像
↓「Git 20 ->画像>1枚 」を見た人も見ています:
・GRAFFITI 20
・矢沢永吉 Part290
・矢沢永吉 Part270
・矢沢永吉 Part250
・Negicco Part120
・MEGWIN TVを語るスレ207
・MEGWIN TVを語るスレ220
・フォトキナ2020中止
・MEGWIN TVを語るスレ203
・DELL OPTIPLEX GX270
・LINEポイント 20pt目
・Flightradar24★40
・MEGWIN TVを語るスレ204
・株。と雑談(狼)1260
・株。と雑談(狼)1302
・株。と雑談(狼)1250
・Girls2応援スレpart10
・MEGWIN TVを語るスレ201
・MEGWIN TVを語るスレ209
・GTA6 2021年発売決定!
・株。と雑談(狼)1203
・株。と雑談(狼)1210
・ホワイトデーオフ2017
・【コテNG】TIPSTAR203
・東京オートサロン 2025
・ホワイトデーオフ2019
・エア・ギア Trick:120
・衝撃!LGBT事件簿 2019
・PIGGS Part.36🐷
・PIGGS Part.42🐷
・R-TYPE FINAL2 STAGE5.0
・MEGWIN TVを語るスレ202
・Flightradar24★30
・MEGWIN TVを語るスレ250
・MEGWIN TVを語るスレ206
・MEGWIN TVを語るスレ208
・コテ雑inラウンジクラシック part250
・R-TYPE FINAL2 STAGE2.0
・アメトーーク!Part290
・R-TYPE FINAL2 STAGE9.0
・PIGGS Part.44🐷
・株。と雑談(狼)1250
・SUKIARABAJIBUNGATARI2021
・【ID無し】TWICE雑談★102
・R-TYPE FINAL2 STAGE20.0
・R-TYPE FINAL2 STAGE4.0
・PIGGS Part.50🐷
・東京オートサロン 2024
・わおTきた02Cよgb8らへこi8Zり
・アメトーーク!Part302
・Dead by daylight Part302
・アトリエオンラインpart20
・【SEGA】オンゲキ Part.20
・Dead by daylight Part205
・Dead by daylight Part209
・【SEGA】オンゲキ Part.102
・au isai V30+ LGV35 Part2
・コテ雑inラウンジクラシック part230`
・UGCityヲチスレ その20
・株。と雑談(狼)1200
・【コテNG】TIPSTAR201
・【コテNG】TIPSTAR200
・なんGTUS部(KB,SIKNなんでも)302
・キングオブコント2022 part5
12:49:32 up 62 days, 13:48, 0 users, load average: 9.92, 9.55, 9.77
in 2.978031873703 sec
@2.978031873703@0b7 on 061901
|