Git 16©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/08/15(火) 00:54:07.61ID:brNIopECE
ソースコード管理を行う分散型バージョン管理システム、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 14
http://echo.2ch.net/test/read.cgi/tech/1457412803/
Git 15
http://mevius.2ch.net/test/read.cgi/tech/1486239735/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured
261デフォルトの名無しさん (ワッチョイ 3d23-kvBu [122.215.159.99])
垢版 |
2018/06/26(火) 18:41:01.36ID:ZJbD0Mnn0
powershell化するん
2018/06/26(火) 20:23:46.80ID:z7QfCwwb0
>>256
統失
2018/06/26(火) 20:30:32.42ID:b/CWbIEE0
MSって以前からgit に積極的じゃん

MicrosoftがWindowsのコードリポジトリをGitに移動
https://www.infoq.com/jp/news/2017/07/microsoft-windows-git

Visual Studio のgit 対応とかもやってるし。

それから、↓のJohannes SchindelinもMSの人だよね。
https://git.github.io/rev_news/2018/05/16/edition-39/
2018/06/26(火) 21:30:29.52ID:XJkOROmiM
gitがWindowsのAPIに対応しないでmsys依存で動いてた期間が長かったからねえ
2018/06/26(火) 21:32:26.03ID:XJkOROmiM
あとVSのgit対応はAndroidStudioに比べて酷く見劣りする
2018/06/26(火) 21:33:24.80ID:3kHUFox/d
>>265
たとえば?
2018/06/27(水) 00:23:55.22ID:+AZ8QKRkM
>>266
今時のIDEなら、ソースの編集画面で、行が修正されてたかどうか表示があるよね?

AndroidStudio はこれがカレントブランチのHEADから修正されてるかどうかを表示してくれる
最新バージョンだと、この修正されてるかどうかの表示から、行の固まりを直接コミットできたりする
add -p がソースの編集画面でできるってことね

全体的に、ソースの編集が、ファイルを編集するのじゃなくて、コミットを編集するイメージでできちゃうのがいい
2018/06/27(水) 02:00:45.52ID:9iAvS6jr0
>>267
それが「酷く見劣りする」のかい?
2018/06/27(水) 04:19:45.96ID:1cOVbB5h0
>>267
正直ニッチ需要
2018/06/27(水) 10:20:54.35ID:YqT9Fk5fM
VSは、ファイルシステム上のソースを編集するIDEに、レポジトリを操作する機能を追加しただけ
Android Studioはレポジトリ上のソースを直接編集するIDEになりつつある

前者が一周遅れているのを酷く見劣りすると表現した
後者はニッチなんかじゃなくて、これからIDEの基本的機能になるよ
2018/06/27(水) 10:29:05.13ID:LpI4Hv/nd
>>270
具体的に
2018/06/27(水) 10:36:13.05ID:YqT9Fk5fM
>>271
>>267
2018/06/27(水) 12:35:11.22ID:AQrUxJEMd
>>270
どうでもいい機能
2018/06/27(水) 13:00:46.70ID:YqT9Fk5fM
この辺どうでもいいって言ってる奴は、コミットする時statusやdiffで確認とかしてなそう
gitignoreも適当で何でもかんでもコミットに突っ込むタイプ
2018/06/27(水) 13:06:25.02ID:AQrUxJEMd
>>274
根拠のない決めつけ頭おかしい
2018/06/27(水) 13:08:26.72ID:HDQcbBITM
>>270
いらない機能だね
2018/06/27(水) 13:09:55.91ID:dJV3kEfcM
マウント取りたいだけやろ?
2018/06/27(水) 14:05:29.15ID:YqT9Fk5fM
>>275
>>267みたいな機能は、>>274みたいな奴には必要ない機能だからね
逆にコミットを丁寧に作りたい奴にはとても便利な機能
2018/06/27(水) 14:49:54.17ID:HDQcbBITM
無駄な機能使って悦に浸りたいだけか
280デフォルトの名無しさん (ブーイモ MM43-HtAK [49.239.64.15])
垢版 |
2018/06/27(水) 17:09:02.20ID:osq4knhsM
底辺には必要ない機能
2018/06/27(水) 20:20:31.88ID:Z4vkTjjE0
中央管理に逆戻りしてるだけにしか思えん。
2018/06/27(水) 22:46:24.77ID:YqT9Fk5fM
どこが中央管理?
2018/06/28(木) 01:01:00.14ID:jCKEjAMV0
これだからコミットオナニストは困る
2018/06/28(木) 01:24:53.49ID:KcoKuxxSM
糞みたいなコミットでプルリク投げんなよ
買ってもらったGithubが泣いてるぞ
2018/06/28(木) 03:05:25.22ID:PD9XS3v8d
ブーイモへの賛同者なし
2018/06/28(木) 03:11:08.11ID:BqUXENrv0
MS が周回遅れなのはいつもの事だろ
2018/06/28(木) 03:12:58.41ID:BqUXENrv0
GUIも
インターネットも
OSSも
Gitも
いつも手のひら返し
2018/06/30(土) 02:36:01.41ID:3Jl3nI7x0
Supercharging the Git Commit Graph
https://blogs.msdn.microsoft.com/devops/2018/06/25/supercharging-the-git-commit-graph/

MSの人がGit 2.18 のcommit graph について熱く語っている。
2018/06/30(土) 07:37:56.40ID:1J8M0PVS0
>>288
>>255
2018/06/30(土) 10:51:20.67ID:l94Kv4qYd
>>288
ありがとう
291デフォルトの名無しさん (アウウィフ FFa1-GJJ6 [106.171.73.36])
垢版 |
2018/06/30(土) 14:13:16.44ID:QJJEkoJ9F
>>288
thx!
2018/06/30(土) 14:36:14.41ID:+q6tlra70
>>288
この改善は、普通の規模のリポジトリにはほとんど影響無い

モジュール分けしてなくて馬鹿みたいにでかい原始的なWindowsのリポジトリをそのままGitで管理するようにしたら、log --graph の表示が遅すぎて使い物にならなくなって、しょうがないから git に対策入れたって話
2018/06/30(土) 15:13:57.50ID:1J8M0PVS0
>>292
よく読んでみ
WindowsじゃなくてLinuxを指標としてるから
2018/06/30(土) 16:03:54.28ID:+q6tlra70
>>293
指標にしてるのはWindowsとLinuxカーネルのリポジトリ両方だろ

Linuxカーネルリポジトリで異様に改善されてるのは branch --contains だけ
これはそんな頻繁に使うもんでもないし、ブランチ全部ローカルにpullしてくる必要もないんで特に問題にならん
log --graph 6秒も許容範囲

それにくらべて、WindowsリポジトリはGVFS使ってチートしてるのに、log --graph が24秒もかかって、
これは使ってる人切れるだろ
今回の改善でこれがなんとか5秒になるわけだ
2018/06/30(土) 16:28:43.58ID:1J8M0PVS0
>>294
自分に都合のいいコマンドだけ取り出すとは苦しいね
>指標にしてるのはWindowsとLinuxカーネルのリポジトリ両方だろ
Gitについては言及なしかい?
2018/06/30(土) 16:45:16.91ID:+q6tlra70
>>295
Git のレポジトリが普通の規模のリポジトリ
コマンド1回あたり数百ミリ秒が数十ミリ秒になったって意味ない
だからほとんど影響無いって >>292で書いてる

俺にとって都合の悪いコマンドのことを書いてくれない?
2018/06/30(土) 17:20:25.83ID:PWlO1Xt3d
>>296
どうやら数値が目に入らないようだ
2018/06/30(土) 17:26:41.23ID:1J8M0PVS0
>>296
お前が許容できるかどうかじゃなくて純粋に数値を見なさい
6秒近くかかってたのが1秒もかからなくなることに価値を見いだせないならこの業界向いてないよw
299デフォルトの名無しさん (ワッチョイ cd2b-6D2o [116.81.170.118])
垢版 |
2018/06/30(土) 17:51:45.08ID:+q6tlra70
>>297-298
Linuxカーネルで6秒が1秒になったのなんて、Windowsリポジトリで24秒が5秒になったのに比べれば全然たいしたことないな
6秒を問題とするなら、Windowsリポジトリが5秒になったのなんて全然問題解決してないじゃん阿保かと
2018/06/30(土) 18:04:27.07ID:BZ9Z1qRpM
git使っててコマンドライン操作にこだわるのはいいけど
コミットグラフ意識してないひとマジでちゃんと勉強してほしい
2018/06/30(土) 18:17:49.02ID:VrMBYeh20
なにをどう意識すりゃいいんだっけ?
2018/06/30(土) 18:21:22.82ID:kTIubsENd
>>300
意識したらどうなるの?
2018/06/30(土) 18:21:50.47ID:+q6tlra70
>>300
ちゃんとコマンドラインにこだわってる人は、
log --graph --branches --remotes --pretty=format:〜
とかを使ってコミットグラフ表示を見てると思うけどね
2018/06/30(土) 18:35:18.00ID:a10/yWPFd
>>299
阿呆はお前やろwww
悔しかったらお前もGitのパフォーマンス改善してみれば?
2018/06/30(土) 18:38:07.46ID:1J8M0PVS0
>>299
これをたいしことないと思えるとはすごいな
仕事でもいまだにXPのRAM2GBとか使ってそう
2018/06/30(土) 19:09:03.95ID:+q6tlra70
>>305
巨大なレポジトリで頻繁に log --graph 見るようなときはローカルブランチで作業中とかなので、コミット範囲指定すれば一瞬で結果返ってくるし特に気にならない
いま試しにlinuxカーネルレポジトリクローンしてみたけど、master上だと確かに数秒かかるけど、ローカルブランチからならコミット範囲指定して一瞬だわ
2018/06/30(土) 19:25:00.31ID:UBF/c/En0
ストップウォッチで6秒を誤差1秒以内で押せる人だけが、
速くなったすげーすげーと喜びなさい
2018/06/30(土) 19:35:18.92ID:UIh+gMYwM
pullするときにガンガンマージコミット作る人とかいるやん?
ちゃんと設定しといてほしい
2018/06/30(土) 19:44:02.17ID:HeGiQgTKd
>>308
何を?
2018/07/01(日) 12:15:12.44ID:py3am0ceM
>>309
git config --global --add merge.ff false
git config --global --add pull.ff only
2018/07/01(日) 13:21:15.23ID:pMnRgqx9d
>>310
その設定嫌いだから断る
2018/07/01(日) 16:05:21.27ID:FN0bsZ790
addやcommitする際に特定の文字列が含まれているフォルダ以下を除外する方法を教えてください
datasets-XX、datasets-YYのようなフォルダを除外したいです
313デフォルトの名無しさん (アウウィフ FFa1-mzC7 [106.171.82.190])
垢版 |
2018/07/01(日) 16:22:29.58ID:ep584YMHF
.gitignore じゃなくて?
2018/07/01(日) 19:59:41.54ID:FN0bsZ790
.gitignoreに*datasets*と書いたんですけどadd *とやると無視してくれませんでした
2018/07/01(日) 23:12:13.45ID:py3am0ceM
>>311
この設定が嫌って、、
gitをSVNみたいに使ってるところとか?
こわい
2018/07/01(日) 23:20:32.85ID:8u5Hs1EC0
>>315
押し付けがましい変な奴
2018/07/02(月) 00:33:57.45ID:kpcF7b8m0
>>314
すでにコミットされてるファイルが存在するフォルダは.gitignoreに追加しても無視できない
それをあえて無視したい場合には以下のどっちかを使うんだけど
git update-index --assume-unchanged
git update-index --skip-worktree
どっちを使うべきかは git update-index でググってみて
2018/07/02(月) 02:50:26.22ID:RGmzUCPS0
プロはgit pullなんか使わない
2018/07/02(月) 05:54:16.00ID:zKK+kKI/0
>>318
そんなこと言ってるやつがいたら、そいつはプロじゃない

理由が上から目線で馬鹿はミスするから使うなだったら
完全にアウト。自分(ミスした本人)が理解してない証拠
2018/07/02(月) 08:33:58.94ID:cyzwZYxBM
おれも普段はfetchとmerge使って
pullはffが確定してる特定条件でしか使わんなあ
2018/07/02(月) 09:37:34.88ID:zKK+kKI/0
fetchとmergeで済むならpullでいいだろw
2018/07/02(月) 09:50:53.90ID:zKK+kKI/0
例えばmvはcpとrm使ってやれるけど、mv使うでしょ?
それと同じだよ。楽な方使え

それにgitのよくある使い方は、pullしたブランチにコミットを追加するのではなく
新たにそこからブランチを切って作業する。
そしてpullしたブランチっていうのは通常他人の作業ブランチ。
だから他人がコミットを追加する。

つまり何が言いたいかというと
1. pullしたブランチは、他人の手によって成長する
2. 自分はそのブランチにコミットを追加しない
ということなんだから、ffは高い確率で確定している
多くの場合はgit pullでOK(--ff-onlyつけときゃffできないときエラーになる)

fetchしてmergeは、cpしてrmするのと同じで、無駄な作業をやってるだけ
そういうのは丁寧な作業でもなんでもないから
2018/07/02(月) 11:11:12.46ID:cyzwZYxBM
merge するときだけ fetch するわけじゃなくて、上流の状態を確認するために fetch は頻繁にやってるのよね
だから merge するときも、まず fetch してブランチの確認してから、問題なければ merge する手順でやる

あと >>322 は、今の一般的な git の使い方とは思えない
他人の作業ブランチをpullするとか自分のとこじゃかなりレアケースで、mergeするのはmasterなりdevelopとかの上流のブランチなことがほとんどだよ
2018/07/02(月) 12:07:23.83ID:RTcL8EDCM
mergeするのは
自分の作った自分だけがコミットするフィーチャーブランチを
他の人とも共有して使うブランチにマージする時、
っていうのが多いよね

フィーチャーブランチを作ったのがだいぶ前でも
コンフリクトがなさそうなときは
masterブランチのヘッドにリセットハードしてからフィーチャーブランチをマージ、
コンフリクトしまくる場合はいったんmasterブランチをフィーチャーブランチにマージしてコンフリクトを解決してからmasterブランチにマージ、
時間あるときはリベース
そんな感じじゃないの
2018/07/02(月) 12:37:42.51ID:cyzwZYxBM
>>324
だいたいそんな感じだけど、masterのヘッドにリセットハードってチェックアウトじゃダメなの?
2018/07/02(月) 12:58:12.03ID:hdADTtxTM
>>325
実は>>324に書いてる方法はあまりやらず、本当はpullしない派なので、、
異端なのかな、、

fetchしまくって常にmasterブランチの動向を監視、
他の人の作業でmasterブランチが成長してきてmergeできなさそうになってきたら
再度フィーチャーブランチを作って
元のフィーチャーブランチの作業をすべてチェリーピック、
フィーチャーブランチの作業が終わればmasterブランチの先端に合わせて(リセットハードして)フィーチャーブランチをmerge
こんな感じ
2018/07/02(月) 14:12:01.33ID:zKK+kKI/0
>>323
> 他人の作業ブランチをpullするとか自分のとこじゃかなりレアケースで、mergeするのはmasterなりdevelopとかの上流のブランチなことがほとんどだよ
master、developも含めて、他人だよ。

masterやdevelopに自分が直接コミットすることはない。
このブランチからはgit pullするだけ。
そしてそれは常にffになる。ffにならないのは異常事態
誰かがとんでもないミスをしたということ

ffになったかどうかはgit pullのログ見てればわかることだし
--ff-onlyつけてれば、ff以外は弾かれる

つまりは、あんたは
fetchして問題ないか"毎回"確認してmergeしてる
俺はgit pullして"問題があったときだけ"確認してる
2018/07/02(月) 14:26:56.91ID:zKK+kKI/0
俺の場合

> fetchしまくって常にmasterブランチの動向を監視、
git pullしまくって常にリモートのmasterに
ローカルのmasterを追尾

masterが変更されるたびに、
フィーチャーブランチをgit rebase master
マージできる場合は、git rebase masterは成功する
コンフリクトが起きればマージできないということ
「mergeできなさそう」なんて曖昧な判断はいらない
コンフリクトを解決すれば、当然またマージできるようになる



ただしプルリク出したあとは、他の誰かがレビューしたってことなので
その作業が無駄(分かりづらく)にならないようにmasterをマージする方法に切り替える
(masterをマージすることで逆に分かりづらくなる場合はgit rebase masterする場合もある)
2018/07/02(月) 14:30:09.48ID:zKK+kKI/0
>>326に書いてある

> 再度フィーチャーブランチを作って
> 元のフィーチャーブランチの作業をすべてチェリーピック、

git rebase master一発で↑これ相当のことをやってることになる

>>326はmergeできなさそうになったらやると言ってるが、
俺はmasterが変更になるたびにやってる。
git rebase masterならそれが可能。しかも簡単。
2018/07/02(月) 15:06:13.90ID:cyzwZYxBM
>>327
別にpullが失敗するかどうかだけを確認してるわけじゃない

masterからブランチ切るときとか、masterにマージするときには、origin/masterの状況がどうなってるか確認したいからまず fetch する
2018/07/02(月) 15:07:13.34ID:cyzwZYxBM
>>328
fetch はフィーチャーブランチがカレントブランチのままできる

いちいち master を checkout して pull しまくるとかマゾなの?
2018/07/02(月) 15:09:33.33ID:zKK+kKI/0
>>331
じゃあお前どうやってんの?
2018/07/02(月) 15:10:25.75ID:zKK+kKI/0
あ、なんだ。masterをfetchしまくってるマゾだったかw
2018/07/02(月) 15:12:01.47ID:zKK+kKI/0
ごめん。masterをfetchしてmergeしまくってるマゾだったねw
絶対ffは成功するのに、わざわざfetchして確認(何を?w)してから
mergeしてご苦労さんw
2018/07/02(月) 15:20:43.68ID:cyzwZYxBM
fetchはカレントブランチに関係無く、すべての上流ブランチ取り込めるの知らないの?
2018/07/02(月) 15:24:39.46ID:zKK+kKI/0
>>335
え? まさか、masterにcheckoutする作業、
つまりgit checkout masterって叩くのが面倒って
だけの話をしてるの?
え?まじでコマンド操作が苦手なだけってオチ?
2018/07/02(月) 15:25:32.61ID:cyzwZYxBM
カレントブランチ変更はいろいろ面倒だから頻繁にはやりたくないけど、
originの状態は常に把握しておきたいから fetch を使う
そして fetch 済みなら pull 使う必要もない
これだけのこと
2018/07/02(月) 15:30:11.71ID:cyzwZYxBM
>>336
お前ほんとにgit 使ってプログラム書いてる?
コミットしてないファイルとか整理せずに checkout いきなりすんなよ
2018/07/02(月) 15:34:27.49ID:cyzwZYxBM
あと自動ビルドとか文法チェックとかcheckout 契機にはじまってしまうからな
頻繁にはやりたくない
2018/07/02(月) 15:34:59.30ID:zKK+kKI/0
>>337
うわwww
ローカルにリモートのブランチを持ってこないとか言い出した。
そうかお前、ローカルのmasterブランチないんだね。リモートのmasterしかないんだね。
すげー変な使い方w


>>338
コミットすりゃいいじゃん。
他にもstashすればいいし
何いってんの?gitの使い方知らないの?
2018/07/02(月) 15:36:10.00ID:zKK+kKI/0
>>339
> あと自動ビルドとか文法チェックとかcheckout 契機にはじまってしまうからな

自分で間違った使い方した上に、
自分で自分の首を絞め、
そして自分に文句を言ってる図w
2018/07/02(月) 15:37:59.89ID:zKK+kKI/0
checkout時に、自動ビルドや文法チェックなんて
する間抜けはまずいないから、ネットでググったら
すぐこいつ見つけられそうw
2018/07/02(月) 15:40:51.79ID:cyzwZYxBM
>>340
>>337のどこにローカルにリモートブランチ持ってこないなんて書いてあるんだ?
必要なときにはローカルに反映させるが、それを頻繁にはやらない
2018/07/02(月) 15:45:52.53ID:cyzwZYxBM
>>342
IDEが自動ビルドとか文法チェックやってる
checkout して内容変われば当然やり直す

IDEじゃなくてもバックグラウンドでそういう監視プロセス動かすことも多い
2018/07/02(月) 15:47:54.07ID:cyzwZYxBM
>>340
リモート確認するためにstash やコミットするとか
やっぱりマゾか
346デフォルトの名無しさん (オッペケ Sr99-k0py [126.229.88.66])
垢版 |
2018/07/02(月) 16:40:10.67ID:JP9Qw5xKr
pull じゃなくて fetch しておくとどんな差分が落ちてきたか diff origin/master とかで見れるから便利だったりするお
2018/07/02(月) 20:20:10.71ID:hdADTtxTM
自分の作ったフィーチャーブランチすら複数同時並行で作業が進むことだってよくあるんだから
いちいちローカルのmasterブランチの位置がリモートと比べてどうなってるかチェックしたってよくない?
2018/07/02(月) 22:15:33.22ID:kpcF7b8m0
>>347
したってよいの?
2018/07/02(月) 22:31:54.58ID:hdADTtxTM
よいよね
2018/07/02(月) 22:36:51.87ID:toay7bjv0
fetchに課金されるわけじゃないんだから好きにしたらいい
2018/07/03(火) 09:52:17.03ID:Sd37HYZB0
>>345
リモート確認すればいいだけでは?
2018/07/03(火) 10:30:06.33ID:uggUKFhUr
ギットハブには来ない
投げっぱなしの外注先
branchもない
mergeできない
2018/07/03(火) 12:19:50.29ID:J+4pn+87r
git使ってプログラムかいてるだってwプププw
2018/07/03(火) 12:32:09.53ID:53aU8Jmhd
gitを使うことが目的になってる人たちがいるからレスバトルで荒れるね
2018/07/03(火) 15:11:35.13ID:SPPv/EkWa
たとえ荒れてても建設的な議論が出来ればそれでいい
2018/07/03(火) 17:26:46.66ID:ldIau+N4d
でも残念ながらくだらないマウントの取り合いなんだよね
2018/07/03(火) 22:22:22.03ID:vgJB6ZFQ0
>>356
おまえいつもくだらないマウント取られてるよなwアホなん?
2018/07/04(水) 01:33:58.31ID:DVDtinqwM
>>352
山下達郎来た
2018/07/04(水) 09:23:58.32ID:Aqc5U10j0
これまでひとりでプログラムかいてたのでバージョン管理ツールを使ったこと無く
チーム開発業務でgitを使うことになったのでいくつか質問させてください

ブランチ チェックアウト コミット プッシュ

の流れでやってくださいとはいわれたんですが
それぞれがリモートローカルどっちで何がおこるか正確にわかってなくて
万一社内のファイル破壊したら怖いので
対応するコマンドとリモートローカルどっちにどんな影響があるか知りたいんですが

gitの使い方を説明するブログってまずローカルにファイルを作ってプッシュするところからはじめてるものばかりなんですが
最初からリモートに社内のファイルがあってそれを更新する場合initは不要なのでしょうか

cloneはread onlyでbranchではなくリモート側に何の影響もないであってますか?

branchはローカルで行うものでリモートには影響はあたえませんか?

デバッグ等には設定ファイル等複数のファイルを更新するんですが
最終的にリモートに反映させるファイルを1つだけにすることって可能でしょうか

その場合どの段階でどうやってファイルを限定すればいいのでしょうか

あとBitBucketっていうアカウントを作るよう指示されたんですがGitとはどういう関係があるんでしょうか
リモートのおき場所を提供してるクラウドサービスぐらいの認識で
すでに社内ファイルがおかれてる場合はウェブ上の作業は必要なく
ローカルでgitコマンドを叩くだけで大丈夫でしょうか?

具体的にコマンド含めて教えていただけるとありがたいです
初歩的な質問ですいませんがよろしくお願いします
2018/07/04(水) 09:28:04.47ID:DVDtinqwM
>>359
プッシュさえしなければ何してもOK
プッシュする前に何をプッシュしようとしてるのか必ず確認すること
2018/07/04(水) 09:34:19.76ID:Aqc5U10j0
branchやcheckoutを行っただけでは
リモート側にはそれを行ったことすら通知はされないってことで大丈夫でしょうか?
間違って(必要のないファイルまで)branchやcheckoutをしても
やり直したり取り消したりすることはできるということでしょうか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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