[過去ログ] Git 18 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
379: (ブーイモ MM4d-1ND9) 2022/07/25(月)10:07 ID:Jqw6JNcZM(1) AAS
リモートリポジトリは、origin以外を使ってみたり、ファイルシステム経由でベアリポジトリを使ってみたりすると理解が深まるね。
インターネット接続不可能な環境だと結構使う。
380(1): (ワッチョイ 13f2-geFY) 2022/07/25(月)23:35 ID:ahGXQIib0(1/6) AAS
>>375
別物っちゃ別物だけど。
gitのヘルプを読んだほうがいいよ。
端的に言えば、origin/devは通常、リモート追跡ブランチと言っていいもので、origin devはコマンドに付けた2つの引数。
mergeはローカルレポジトリにあるrefとマージするもの。
fetchやpull(pullはfetch+mergeだから、以下fetchのみ説明する)は、リモートレポジトリにあるrefを、ローカルレポジトリにコピー/ダウンロードしてくるもの。
refは"コミットを指す参照"のこと。
つまり、refはローカルブランチ、リモートブランチ、タグなどのこと。
よく言われるように、ブランチやタグは、コミットへのポインタであるから、refはコミットを指す参照と言った。
refは、各々のレポジトリにルートにある.git/refs/**が実体。(以下.git/を省略)
refはすべてレポジトリごとに保存されている。
git branchコマンドなどでローカルブランチを作ったり、fetchやpushでリモートブランチを作ることができる。
381(3): (ワッチョイ 13f2-geFY) 2022/07/25(月)23:37 ID:ahGXQIib0(2/6) AAS
>>380
リモートブランチという名前だけど、特定のレポジトリ(例えばorigin)のrefを、ローカルレポジトリにコピーしたもの。
リモートレポジトリoriginからfetchをすると、originにあるrefs/**をダウンロードしてきて、ローカルファイルシステムに、refs/origin/**として保存する。
fetchをしなければ、最後にダウンロードしたときのままで、リモートレポジトリが他人によって更新されてても、refs/origin/**は自動には更新されない。
いつもrefs/を付けるのは面倒だから、これは省略できる。
ローカルブランチの実体.git/refs/heads/branchAは、branchAのみで通常呼ばれる。
リモートブランチの実体.git/refs/remotes/origin/branchBは、origin/branchBのみで通常呼ばれる。
382(1): (ワッチョイ 13f2-geFY) 2022/07/25(月)23:38 ID:ahGXQIib0(3/6) AAS
>>381
merge branchAは、merge refs/heads/branchAの省略形で、後者で書いてもマージできる。
refsであればマージできる。
上に書いたように、refsはリモートレポジトリからコピーしてきたもの(origin/...)と、自分で作ったref(ローカルブランチなど)のことだから、
merge branchAでも、merge origin/branchBでも正しい表現。
そのときそれらが指しているコミットとマージする。
383(1): (ワッチョイ 13f2-geFY) 2022/07/25(月)23:39 ID:ahGXQIib0(4/6) AAS
>>382
fetch origin devは、fetch origin refs/heads/dev:refs/remotes/origin/devの省略形で、後者で書いてもfetchできる。
これは、originにある.git/refs/heads/devを、ローカルレポジトリの.git/refs/remotes/origin/devにコピーするということ。
だから、fetch origin develop:devと書けば、originのdevelopを、ローカルにdevという名前で保存することも可能。
ただしトラッキングブランチの設定がある場合は、もう少し前処理が入る。(説明が冗長になるので省略。ただし、ほとんどの場合はリモートトラッキングの設定しているはず。)
ここで、fetch origin/devと書くことが何をしているかは分かりますか?
何を省略しているかを考えれば想像できると思います。
答えは書きませんので、自分で実験するなり考えてみてください。
(普通このコマンドは失敗します。そのようなrefを普通は作らないからです。)
ちゃんと知りたければ、自分でヘルプ読んだほうがいいよ。
push, fetch, pull, refspecなどを読んでみて。
384: (ワッチョイ 13f2-geFY) 2022/07/25(月)23:48 ID:ahGXQIib0(5/6) AAS
>>383
誤記あったので訂正。
> fetch origin/devと書くことが
→ fetch origin origin/devと書くことが
以上。
ちなみにfetch origin/devは必ず失敗すると思います。
その位置にはrefではなくてリモートレポジトリ名を書くわけだが、origin/devってい名前は作らないと(多分作れない)思うので。試したことないけど。
385: (ワッチョイ 13f2-geFY) 2022/07/25(月)23:59 ID:ahGXQIib0(6/6) AAS
refspec使った例で、自分がたまにやるやつを紹介して補足すると、
pushの例になるけど、
git push origin @~2:developとかは使うかな。
update update ...っていくつかコミットしたあとに、2つ前までのやつならちゃんと作れてるから、それをpushしておこうなんてときに。
fetch方向だとそういう工夫は必要ないと思うから、追跡してるとおりに取ってきちゃうけど。
386: (ワッチョイ 13f2-geFY) 2022/07/26(火)00:11 ID:BPsr0FTg0(1/3) AAS
あと、上にorigin以外を...って話があるから、自分のユースケース紹介しておくと、
自分だけが使うようなコンフィグファイルの設定とかを、backupっていうリモートレポジトリの名前で、別のフォルダに向けておいて、
git push backup myconfig1とかやることあるかな。
この場合は、リモートブランチとしてbackup/myconfig1っていうのが作られるよ。
リモートレポジトリはoriginだけじゃなくてもよくて、
ローカルレポジトリに、backup/myconfig1はorigin/developと共存してる状態だよ。
ごめんね、自分語りが長くて。
387(2): (テテンテンテン MMeb-HyOX) 2022/07/26(火)12:40 ID:iEhVjhlSM(1) AAS
gitクライアントからボタン一つクリックするだけで完了するような操作を、いちいちターミナル立ち上げてタイプしてる人は何?
しかもタイピングが遅いからまどろっこしくて仕方ないw
388(1): (ワッチョイ d347-6W7N) 2022/07/26(火)15:46 ID:LlJvHA5t0(1/2) AAS
>>387
コマンドでgitを使う=タイピングが遅い
決め付けの激しい人だな
389: (ブーイモ MM4d-W0Yq) 2022/07/26(火)16:14 ID:FjX46+h7M(1) AAS
そもそも普段からキーボード打つ方が、何十倍も早いだろ。煽るにしてもレベル低すぎ。
それともマウスでプログラム組んでるとか主張するんだろうか?
390(1): (ワッチョイ b15f-KxVo) 2022/07/26(火)17:29 ID:AlqtQl//0(1/2) AAS
>>377
origin/devはgit logで表示されるorigin/devと同一という理解であっていますか?
であれば、git logをした際にdevブランチの方がorigin/devよりも上(新しい)に表示されることがあるので
必ずしもorigin devのローカルコピー版であるorigin/devは最新ではない という説明には納得がいきます。
>>381
冒頭に書いてあることは、リモートブランチもリモート追跡ブランチと同様に、ローカルリポジトリ上に存在する という理解でよいですか?
391: (テテンテンテン MMeb-HyOX) 2022/07/26(火)17:53 ID:aK/PU7Z0M(1) AAS
>>388
そうとは言ってないだろ
文書が読めるようになってからレスしろよ
392: (オッペケ Sr85-YGxf) 2022/07/26(火)19:18 ID:cKNkMgD2r(1) AAS
「タイピングが遅い」っていうのは自分のことを指していってるんじゃないかなぁ
たぶんある種の自虐かと
393(1): (アウアウウー Sa5d-fG1S) 2022/07/26(火)19:34 ID:wvY0b08ra(1/3) AAS
いやよく読もう
> いちいちターミナル立ち上げてタイプしてる人は何?
> しかもタイピングが遅いからまどろっこしくて仕方ないw
タイピングが遅いはどう考えても一般論じゃないんだから、身近にそういう変わった人がいるという質問風の愚痴だろ
「ほーん、で?」「それは大変だったね」「しらんがな」とか答えてあげるかスルーすればいい案件
394(1): (ワッチョイ d347-6W7N) 2022/07/26(火)19:38 ID:LlJvHA5t0(2/2) AAS
特定の誰かがタイピング遅いから全員gitコマンド使うなという主張だよ
395: (アウアウウー Sa5d-fG1S) 2022/07/26(火)19:42 ID:wvY0b08ra(2/3) AAS
被害妄想じゃね
396(1): (ワッチョイ 8b8f-G3rp) 2022/07/26(火)19:43 ID:ZFH6mJGl0(1) AAS
いちいちターミナルを立ち上げって書いてあるけど、普通ターミナルなんて立ち上げっぱなしだよなあ
397: (アウアウウー Sa5d-fG1S) 2022/07/26(火)19:49 ID:wvY0b08ra(3/3) AAS
開いてあるターミナルでコマンド履歴を呼び出したり git switch - 打ったりはコマンドが早いな
エイリアスがあればさらに早い
そのタイピングが遅い人はgitの練習かタイピングの練習がしたいんじゃね
398(1): (オイコラミネオ MM55-geFY) 2022/07/26(火)19:56 ID:StEemcQzM(1/2) AAS
>>390
はい。わたしは>>381には、リモートブランチとリモート追跡ブランチが同じ意味で書いてます。
前半は自分にはわからなかったです。
どのorigin/devが、logのorigin/devと同じと言っているんだろう。
origin/devは普通.git/refs/remotes/origin/devの省略形として使われるのであって、
git logの引数の説明に、refspecとかrevisionとか書いてあったらそうだろうと思います。
自分はそういうつもりで使ってますが、ちゃんと知りたいなら調べてみたらどうでしょう?
文脈によっては.git/refs/heads/origin/devかもしれないですね。これは難癖ですが。(つまりorigin/devっていう名前のローカルブランチ。でもコマンドミスで、たまに作ってしまう…)
399(1): (オイコラミネオ MM55-geFY) 2022/07/26(火)19:59 ID:StEemcQzM(2/2) AAS
>>398
話が長くてすまんが、要はorigin/devはなにかの省略形で、それは文脈によって決まるということです。
origin/devっていったら、普通はアレのこと、というのはありますが、一つの言葉に固執している様子を感じたので、原著に当たったほうがいいよというアドバイスになります。
400(1): (ワッチョイ b15f-KxVo) 2022/07/26(火)20:52 ID:AlqtQl//0(2/2) AAS
>>399
ああ、そういうことですか。腑に落ちました。
仰るとおり、一つの言葉の意味を一つに定めようとしていました。
origin/devといっても脈絡次第でそれが何の略であるか、いくつか解釈パターンがあるんですね。
原著はgit-scm.com/docs/であってますか?
tagやcommit等を調べるときはこのページを利用しました。
このスレの皆さん、リモート追跡ブランチが何であるかを理解した時も原著を参照されたのですか?
書籍等でわかりやすく日本語でまとめられた情報等は購入されていないのでしょうか?
参考までに教えて頂けると助かります。本当は自分でわからないことをすべて調べられるのなら理想なのですが
まだその段階には至っていないようです。
401(1): (ワッチョイ 13f2-geFY) 2022/07/26(火)21:27 ID:BPsr0FTg0(2/3) AAS
>>400
用語はそのurlからgitglossaryで検索すると見れます。
というか、コマンドラインからgit help gitglossaryで、使ってるバージョンのヘルプページが開きます。
この中を、remote-tracking branchをページ内検索すればリモート追跡ブランチの説明があります。
あと、git help gitで、使えるコマンドの大枠が見れます。
本については、10年以上前ですが自分はjunio c hamanoが書いた本で学びました。日本語です。その後3冊買いましたが、最初ので十分でした。
オンラインで無料で読めるやつならpro gitが一番読みやすいと思います。日本語訳があります。
ただしこれはツールとしての使い方が主です。
402: (ワッチョイ 13f2-geFY) 2022/07/26(火)21:35 ID:BPsr0FTg0(3/3) AAS
>>401
ProGit後半の方には内部実装に踏み込んだ説明もあるので、あなたの知りたいことは、こちら寄りかもしれません。
多くの人は、ツールを一般的なユースケースで使えればいいのであって、origin/devとorigin devはどう違うのか、といった疑問は感じないか、もしあってもすぐに忘れます。
origin/devとorigin devの違いだけを知りたい場合はすでに説明したとおりです。
でも更に疑問が出てくると思います。
あなたの疑問は、定義をしっかり知ったほうが理解につながるものだと思うので、地道にヘルプなどのドキュメントをたくさん読んで、自分の頭で探し方を学んだほうがいいものだと思います。
403: (ワッチョイ 937c-VsAj) 2022/07/26(火)23:28 ID:khPn0eWd0(1) AAS
commitはメッセージが改行付きで長めになるのでGUIでやってるw
status,checkout,push,pull,mergeみたいなのはコマンドラインでやってるなぁ
404: (ワッチョイ 8b8f-G3rp) 2022/07/27(水)00:32 ID:t+HDDZmX0(1) AAS
commitコマンド実行したときにエディタ立ち上がるようにしてないの?
405: (JP 0H8b-kbwT) 2022/07/27(水)02:00 ID:CxAuph4lH(1) AAS
環境依存な話ですが、Macでターミナルからgit difftoolした時に外部diffビューアを立ち上げ
たいのですが、皆さんどうしてますか?
ググってopendiff (-> FileMerge)を呼ぶ設定にしてみたのですが、複数の変更ファイルが
あるとき、FileMergeが2番目以降のファイルを開いてくれません
406: (ブーイモ MM4d-W0Yq) 2022/07/28(木)16:17 ID:Lt0nllDPM(1/2) AAS
呼び方が混乱してるのかも。通常の使い方だと、以下の通り。
origin dev 「リモートブランチ」、 origin という名前のリポジトリ上にある dev という名前のブランチ。
origin/dev 「リモート追跡ブランチ」、origin/dev という名前のローカルブランチ、上記のリモートブランチを追跡するように設定されている。
dev 「追跡ブランチ」、dev という名前のローカルブランチ、上記のリモート追跡ブランチ(origin/dev)が上流に設定されている。
(注:あくまでデフォルトなので変えることはできる…)
407(3): (テテンテンテン MMeb-HyOX) 2022/07/28(木)16:29 ID:11jlioVlM(1) AAS
ターミナルにコマンド入力してのがかっこいいと思ってる人いる?
408(1): (スププ Sd33-6W7N) 2022/07/28(木)17:09 ID:9SWmz8k0d(1) AAS
>>407==>>387
どんだけコマンド敵視してんだよ
上下前次1-新書関写板覧索設栞歴
あと 594 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.024s