12/10/14 01:10:12.86
ソースコード管理を行う分散型バージョン管理システム、Gitについて語ろう。
Git - Fast Version Control System
URLリンク(git-scm.com)
◆前スレ
Git 4
スレリンク(tech板)
◆関連サイト
Pro Git - Table of Contents
URLリンク(progit.org)
Git入門
URLリンク(www8.atwiki.jp)
2:デフォルトの名無しさん
12/10/14 01:11:23.18
◆過去スレ
Git 3
スレリンク(tech板)
Git 2
スレリンク(tech板)
git スレッド [Linux板]
スレリンク(linux板)
◆関連スレ
バージョン管理システムについて語るスレ9
スレリンク(tech板)
CVS導入スレ~ Rev.3
スレリンク(tech板)
Subversion r14
スレリンク(tech板)
【分散型バージョン管理】 Mercurial 2【hg】
スレリンク(tech板)
【bzr】Bazaarでバージョン管理 Rev 3
スレリンク(tech板)
◆関連スレ 別板
CVS 1.3 [UNIX板]
スレリンク(unix板)
subversion バージョン管理【サブバージョン】 [Linux板]
スレリンク(linux板)
3:デフォルトの名無しさん
12/10/14 01:11:56.74
◆関連書籍
Gitによるバージョン管理
2011/10
URLリンク(ssl.ohmsha.co.jp)
実用Git
2010/02
URLリンク(ssl.ohmsha.co.jp)
入門Git
2009/9
URLリンク(www.shuwasystem.co.jp)
入門git
2009/08
URLリンク(ssl.ohmsha.co.jp)
4:デフォルトの名無しさん
12/10/14 10:31:21.54
make 使ったこと無い子が暴れてるのか
5:デフォルトの名無しさん
12/10/14 10:37:25.11
まったくこれだからRubyっ子は(断定)
6:デフォルトの名無しさん
12/10/14 10:41:34.15
タイムスタンプを巻き戻すメリットって何?
デメリットがあるのは分かる > make
7:デフォルトの名無しさん
12/10/14 10:42:19.19
rakeでもtimestamp見るんじゃなかった。
8:デフォルトの名無しさん
12/10/14 10:49:07.08
>>6
タイムスタンプを見るだけで何時修正したファイルなのかを判断できるw
9:デフォルトの名無しさん
12/10/14 11:47:31.21
タイムスタンプしか見ない人に対して、修正してないフリが出来る
10:デフォルトの名無しさん
12/10/14 12:01:50.72
Windowsがタイムスタンプ信者を増やしてる気がするな。
Sambaでコピーして、makeがおかしい毎回cleanしなきゃ
ってのもいる。
11:デフォルトの名無しさん
12/10/14 12:48:30.80
Gitはチェックアウト時のファイルのタイムスタンプをコミット時間にしないウンコ
12:デフォルトの名無しさん
12/10/14 12:57:14.76
>>11
だから、そうするメリットは何?
13:デフォルトの名無しさん
12/10/14 13:21:41.54
チェックアウトより、git archiveのファイルのタイムスタンプをコミット時間にしてくれ
14:デフォルトの名無しさん
12/10/14 13:23:43.36
一方 mac binary には check sum があるので一目瞭然なのであった
15:デフォルトの名無しさん
12/10/14 14:06:17.89
>>11
コミット時間にされたらソッチの方が迷惑だボケ
コミットした時のファイルのタイムスタンプを維持しろ
16:デフォルトの名無しさん
12/10/14 14:19:03.36
>>13には同意できる
17:デフォルトの名無しさん
12/10/14 14:33:19.08
>>12
電気代節約
18:デフォルトの名無しさん
12/10/14 15:34:31.16
>>17
馬鹿?
19:デフォルトの名無しさん
12/10/14 15:43:35.63
>>13
だからコミット時間じゃ意味が半減するだろ
20:デフォルトの名無しさん
12/10/14 16:05:08.82
ファイル毎にタイムスタンプ保持しろと?
面倒なやつだな
21:デフォルトの名無しさん
12/10/14 16:05:10.08
タイムスタンプを維持するってことは、中身が変わってなくても変分ありになるってことだよな
マージする度にどちらの時刻を使うか選ばされるのか
分散開発には使えないな
22:デフォルトの名無しさん
12/10/14 16:06:10.46
ファイルをいつ修正したか見たいんだったら
logを見ろよ
23:デフォルトの名無しさん
12/10/14 16:08:26.99
ログ見れない低能だから
24:デフォルトの名無しさん
12/10/14 16:12:12.01
>>21
>中身が変わってなくても変分あり
中身が変わってなければ日付も変わらないだろ
何を言っているんだ
25:デフォルトの名無しさん
12/10/14 16:15:43.75
>>24
touch
26:デフォルトの名無しさん
12/10/14 16:18:48.16
>>25
それは意図的に変えてるだろ
混同するなアホか
27:デフォルトの名無しさん
12/10/14 16:21:45.89
ぷwww
> 中身が変わってなければ日付も変わらないだろ
この状況がありえないと思ってたんだろ?
なのに論破されて顔真っ赤wwww
28:デフォルトの名無しさん
12/10/14 16:24:40.11
だからそんな機能要らないってwwww
29:デフォルトの名無しさん
12/10/14 16:29:38.41
svnがファイルの更新をタイムスタンプで見る仕様だったから
元(?)svn信者はタイムスタンプの保持に拘る傾向があるな
gitでは全く意味ないけど
30:デフォルトの名無しさん
12/10/14 16:52:17.76
えっ?
gitってタイムスタンプじゃないの?
じゃあ、チェックイン時刻?
31:デフォルトの名無しさん
12/10/14 17:20:13.21
スレ立てたばかりで書き込み無いと落ちるんだってね
容量増やし職人ご苦労さん
32:デフォルトの名無しさん
12/10/14 17:22:14.29
更新日時→ファイルサイズ→ハッシュ?
33:デフォルトの名無しさん
12/10/14 17:55:27.12
////////, ”” ヽミ川川
|//////, ’” ’,川川
川/////, ’”,,,,,,,,,,,,,,,, r””‘,川||
川f 川f´ ,ィ::ラ’,川 うわっ…私のgit、タイムスタンプ…?
川ヘ | 弋て::>  ̄ ’,リ
川 ヘ.__ ヽ /7! (29歳 Aさんの場合)
川川 ヘ _,. ’-‐””´y’ //
川川リヘ , ’´ __,,,/ / /
川川川|/ ’”´ , ’´ /||
川川川| /川
34:デフォルトの名無しさん
12/10/14 17:56:40.68
md5sumのフリーの良いライブラリってなに?
35:デフォルトの名無しさん
12/10/14 17:57:58.86
>>29
makeの仕様だろ
36:デフォルトの名無しさん
12/10/14 18:07:29.98
ファイルのタイムスタンプが重要なんだったらDVCS使わない方が良いんじゃないの?
37:デフォルトの名無しさん
12/10/14 18:13:11.60
>>36
スレリンク(tech板)
946 名前:デフォルトの名無しさん [sage]: 2011/11/02(水) 19:25:52.78
TortoiseHGを最近使いだして、その使い勝手に感激しています。
そこで質問なんですが、ファイルの更新日時も管理対象にすることはできないのでしょうか?
特定のリビジョンへ更新した際に、更新日時もそのときのものに変更されれば
最高なんですが。
947 名前:デフォルトの名無しさん [sage]: 2011/11/02(水) 19:40:30.94
>>946
タイムスタンプ更新是非については総合スレの話題として、
それらしき拡張はあるようだ。
URLリンク(mercurial.selenic.com)
URLリンク(mercurial.selenic.com)
URLリンク(mercurial.selenic.com)
948 名前:デフォルトの名無しさん [sage]: 2011/11/02(水) 21:58:54.77
>>947
TimestampModExtension
これ使ってみました。
手間いらずでバッチリ希望通りの動きをしているようです。
どうもありがとうございました。
38:デフォルトの名無しさん
12/10/14 18:23:41.96
git 用の TimestampModExtension 作れ
そしたらネ申になれるぞ
39:デフォルトの名無しさん
12/10/14 18:37:48.52
//
/ / バカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ 馬鹿には無理
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
40:Perl忍者 ◆M5ZWRnXOj6
12/10/14 18:47:11.05
enpelさん必死っすね
gitについて語り合う時点で低脳なんです
ゲームプログラミングしてるやつって低脳がおおいですね
えんちゃん ?@enpel
@fumilin 皆でgithub開発しよう。慣れればgitの方が融通は聞く気がする。アセットサーバーの昨日を知らなすぎるだけかもしれないけど
41:デフォルトの名無しさん
12/10/14 19:04:37.10
チェックアウトするたびにmake clean; make
素晴らしく電気代の無駄だな
42:デフォルトの名無しさん
12/10/14 19:24:21.89
>>41
makeを使っていることが人生の無駄
43:デフォルトの名無しさん
12/10/14 19:37:28.70
いまどきはEclipseなどのIDEを使ってコンパイルする
Makefileなんて書きたくても書けない雑魚ばっかりですよ
44:デフォルトの名無しさん
12/10/14 19:47:42.99
>>43
gitってMakefile手書きなの?そりゃウンコだ。
URLリンク(github.com)
45:デフォルトの名無しさん
12/10/14 21:49:17.61
>>41
中身が変更されてない(正確にはハッシュが変わらない)ファイルはタイムスタンプも変わらないからmakeはそのままで動くけど?
46:デフォルトの名無しさん
12/10/14 21:56:38.65
今のgitはそうだね
タイムスタンプを巻き戻せと言ってるアホに合わせたら
動かなくなるけど
47:デフォルトの名無しさん
12/10/14 21:59:58.13
まあ普通に問題になるのは、ファイルを旧バージョンに戻したときのタイムスタンプだな
48:デフォルトの名無しさん
12/10/14 22:18:16.79
gitの動作は現状のとおりでいいとして、
チェックアウトでコミット時刻に戻したいならそういうスクリプト書けばいいし、
コミット時の変更時刻に戻したいならコミットのフックにそういう記録付けさせればよい
これで万事解決だと思うのだが
# 遅ればせながらスレ立て乙>>1
49:デフォルトの名無しさん
12/10/14 22:23:16.80
>>48
何も解決していない。コミット時にファイルのタイムスタンプを保存してチェックアウト時にそれにするという需要があって、
Mercurialではそれがある。Gitには無い。
50:デフォルトの名無しさん
12/10/14 22:26:26.63
つまりスクリプトすら書けない無能には
解決になってないってことだね
無能の自分のために誰かスクリプト書けよコラってことだね
51:デフォルトの名無しさん
12/10/14 22:30:33.49
>>49
じゃあMercurial使えばいいじゃん
52:デフォルトの名無しさん
12/10/14 22:34:47.08
馬鹿には無理
53:デフォルトの名無しさん
12/10/14 22:36:09.20
>>49
時系列順に
(A)ファイル変更→(B)ステージ→(C)ファイル変更(if any)→(D)コミット→(E)チェックアウト
チェックアウトの時点では普通(E)の時刻になるわけだが、(A)~(D)のどれになるべきなんだ?
54:デフォルトの名無しさん
12/10/14 22:39:42.24
バカチョンMakefileで喜んでるところが...
55:デフォルトの名無しさん
12/10/14 22:42:13.37
>>50
gitとmakeのためにスクリプトを書かないとダメなのか。gitは馬鹿じゃないと無理だ。
56:デフォルトの名無しさん
12/10/14 22:44:26.30
タイムスタンプを巻き戻すメリットを説明して、
自分はスクリプト書けない程の想像を絶する低能なので
誰か書いてください、と言えば書いてもらえるかもね
57:デフォルトの名無しさん
12/10/14 22:45:35.90
あと、gitでログも見れない程の低能です、も付け加えると可能性が上がるかもよ
58:デフォルトの名無しさん
12/10/14 22:48:22.85
>>57
gitのログって読むものなんですか?ウンコなログしか無いんですけど。
59:デフォルトの名無しさん
12/10/14 22:51:12.37
ログの見方も分からない低能です、と
60:デフォルトの名無しさん
12/10/14 22:53:28.99
gitってmergeなんたらかんたらってコミットログに勝手に付けるウンコソフトですよね?
61:デフォルトの名無しさん
12/10/14 22:55:41.32
昨日からgitほとんど使ったこと無いやつが紛れてないか?
checkoutの件もそうだったし、logもなんか勘違いしてる気がする
書き込みに癖があるからたぶんずっと同じ奴なんだと思うけど
62:デフォルトの名無しさん
12/10/14 23:02:50.28
> 昨日からgitほとんど使ったこと無いやつが紛れてないか?
Windows+svn信者の可能性が濃厚
63:デフォルトの名無しさん
12/10/14 23:04:46.56
>>37
本家の機能でもなくてただの拡張スクリプトじゃないか。
64:デフォルトの名無しさん
12/10/14 23:06:19.20
>>30の時点で明らか
65:Perl忍者 ◆M5ZWRnXOj6
12/10/14 23:10:46.87
いまさらgithubに語り合ってる低脳が集まってるスレはここですか!?
おおおおおおおおお!!!
中学生レベルのトーク内容ですよ!
いまさらっすか
66:Perl忍者 ◆M5ZWRnXOj6
12/10/14 23:12:12.54
enpel見てるとゴミクズだよなあ
あいつ20代後半~30代くらいだろ?
っであの知識量だろ?
いまさらgithubとかわめいてる低脳だろお!!!!!!!!w
Ruby最強中学生コミッタsora_hとLL最終決戦させたら
一瞬で敗退するだろうなあいつは
67:デフォルトの名無しさん
12/10/14 23:12:23.06
ここまで誰一人としてgithubなんて話題にしてねーよwww
68:デフォルトの名無しさん
12/10/14 23:39:31.05
>>43
Eclipseもタイムスタンプ見てると思うが
69:デフォルトの名無しさん
12/10/14 23:49:31.43
つか、みんながみんな同じタイムゾーンで開発してるわけじゃないやろ
70:デフォルトの名無しさん
12/10/14 23:52:28.36
>>69
だからgithubは変なタイムゾーンなのですね?
71:デフォルトの名無しさん
12/10/14 23:56:33.41
>>58
それはお前がウンコなログ書いてるからだろ…
72:デフォルトの名無しさん
12/10/15 00:00:19.52
>>66
URLリンク(github.com)
消したのか、つまんねー奴w
73:デフォルトの名無しさん
12/10/15 00:03:10.30
にゃ~
74:デフォルトの名無しさん
12/10/15 08:49:57.03
>>53
あとマージするときも考えなきゃね。
マージ元の時刻とマージ先の時刻とマージした時刻のどれを採用するか?
もちろんファイルの中身は同一なんだけどね。
タイムスタンプも自分のシステムとリモートと同期が取れてるとは限らないから、feachした時に時刻差分を記録して補正する必要もあるかもね。
75:デフォルトの名無しさん
12/10/15 09:20:34.87
>>74
マージした時刻でいいだろ
ファイルに変更があればタイムスタンプを更新すべきだ
76:デフォルトの名無しさん
12/10/15 12:13:46.75
つまりPULLする度にほとんどのファイルのタイムスタンプがPULLした時刻になると。
そのタイムスタンプに何の意味があるのかわからないけどね
77:デフォルトの名無しさん
12/10/15 12:33:55.46
そもそもタイムスタンプに何の意味も持たせないのがgit
78:デフォルトの名無しさん
12/10/15 12:53:51.66
gitはエンタープライズで使えないという結論でOK?
79:デフォルトの名無しさん
12/10/15 12:56:42.29
>>78がGitを使えないというのはOK
80:デフォルトの名無しさん
12/10/15 13:05:16.18
>>79
タイムスタンプの他にディレクトリ・ファイルのリネームを扱えないという点でGitは使っていないから。ありがとう。
81:デフォルトの名無しさん
12/10/15 13:39:24.84
ファイルのリネームは情報としては保持しないけど、実用上は問題なく判定してくれるんじゃなかったっけ?
git mvしてgit statusするとrenamedと出る
82:デフォルトの名無しさん
12/10/15 15:06:34.52
rename を git 通さず os レベルでやると時々死ねる
83:デフォルトの名無しさん
12/10/15 15:51:36.24
同一コミットにしておけばいいだけじゃなく?
84:デフォルトの名無しさん
12/10/15 22:41:55.69
すごい初歩的な質問なんですが、gitにおいてローカルレポジトリとマスターレポジトリって区別はあるんですか?
例えば二人で共同開発するとして、よく例に出てくるのはマスターレポジトリの置いてあるサーバと、
それぞれの人間のPCっていう構造ですけど、例えばマスターレポジトリがなくて、
二人がそれぞれ個人サーバ上で開発して、相手のサーバにpushしあうというような構造でもいいのですか?
85:デフォルトの名無しさん
12/10/15 22:48:38.52
>>81
ローカルで変更したファイルがリモートでリネームされていても
pullした時にリネーム先のファイルに自動的にマージされるね。
svnだとコンフリクト出るだけで訳わからなくなっていたから
gitに乗り換えて楽になったよ。
>>82
.gitignoreをちゃんと設定してあればgit add -Aで済ませる事も出来るよ。
86:デフォルトの名無しさん
12/10/15 23:15:00.27
>>84
マスターかどうかの区別は無いけどbareかどうかの区別はある
ワーキングツリーのある作業用リポジトリとは別に
個人サーバーにbareリポジトリを置くのならpushしあえるし、
そうじゃなければpullしあうのはOKだがpushしあうのはややこしい
87:デフォルトの名無しさん
12/10/15 23:29:36.98
>>86
なるほど、とりあえずどっかにbareレポジトリってのがあったほうがいいのですね
bareレポジトリについて勉強します
ありがとうございます
88:デフォルトの名無しさん
12/10/15 23:53:57.03
>>84
--sharedにしてないとpushした時に、権限で怒られないっけ。どんなシステムとアカウントでやってるか知らないけど。
pullなら書き込むのは自分だからいいんじゃない。
89:デフォルトの名無しさん
12/10/15 23:55:54.03
>>87
git init --bare --share
のことだと思うよ。
90:デフォルトの名無しさん
12/10/15 23:59:49.12
各人が自分用のbareリポジトリを置いてそこにpushして、
相手のbareリポジトリからpullしあうのが簡単だと思うけどどうなのかね
91:デフォルトの名無しさん
12/10/16 00:26:27.42
チームメンバーが好きにbareリポジトリ作れるサーバーが一つあると便利よね。
92:デフォルトの名無しさん
12/10/16 11:15:47.53
>>91
つ bitbucket
93:デフォルトの名無しさん
12/10/16 18:26:37.14
>>58
差分を読むんだよ
94:デフォルトの名無しさん
12/10/16 18:45:00.10
>>93
差分はどうやって読むのですか?TortoiseGitがウンコなんですけど。
95:デフォルトの名無しさん
12/10/16 20:05:38.47
>>92
フリーソフトならいいけど、業務用のファイルを入れるのは無理だなぁ
96:デフォルトの名無しさん
12/10/16 20:39:44.48
>>94
GUIしか使えない低能はsvn使ってるべき
マジで
97:デフォルトの名無しさん
12/10/16 21:04:52.03
GitHubにてprivateレポジトリを使って、
4人でコードを書く予定です。
この場合、プランは4人ともMicroなんでしょうか?
それとも一人だけMicroを契約しておけばよいのでしょうか?
すみませんが、教えていただけると助かります。
98:デフォルトの名無しさん
12/10/16 21:30:24.20
>>94
書いてあるのが読めんのにやってるんかい?
ログはピンきりだからね、読めなくても、何とかなるんだよ
99:デフォルトの名無しさん
12/10/16 22:17:21.94
ターミナルでプロジェクトのgitいじってる時に、
現在地/...../...../目的ファイル
なんかをいじりたい時って、効率良くいじれる方法ないですか?
vi 現在地/...../....../目的ファイル ってするのは結構面倒なんです
100:デフォルトの名無しさん
12/10/16 22:28:16.66
>>99
cd 現在地/...../...../
101:デフォルトの名無しさん
12/10/16 22:47:21.98
目的のファイルの位置毎にターミナル開いてみたら
102:デフォルトの名無しさん
12/10/16 22:52:41.41
viが面倒ならemacsを使えばいいじゃない
103:デフォルトの名無しさん
12/10/16 22:54:12.91
馬鹿には無理
104:デフォルトの名無しさん
12/10/16 22:54:54.47
find . -name hoge|xargs editor
emacs開きっぱなしだから、最初以外は近くのバッファから辿るけど。
105:デフォルトの名無しさん
12/10/16 23:38:01.32
>>99
~/.gitconfig に
[alias]
vi = "!f() { vi "$(git ls-files "\\*$1\\*" | head -10)"; }; f"
って書いて
$ git vi 目的ファイル
106:デフォルトの名無しさん
12/10/16 23:52:44.79
>>105
目的ファイルのファイル名全部入力するの面倒じゃんw
zsh辺りなら、リポジトリ内の目的ファイルの頭何文字か入力すれば、
リポジトリ全体から探して途中のディレクトリを補間してくれるとかできないのかね?
まあ俺はemacsのdiredに頼りっぱなしだから使わないがw
107:デフォルトの名無しさん
12/10/17 00:25:00.99
>>106
$ git lv 的ファイ
でもいけるよ
108:107
12/10/17 00:27:30.81
>>107
s/lv/vi/
109:デフォルトの名無しさん
12/10/17 00:33:28.94
>>107-108
どこまで入力したら目的のファイルを一発で開けるかわかりにくいじゃないw
まあでも、全部入力しても同じファイル名が複数ある可能性もあるのか
viならいっぱい開いてから:nとかで選べばいいしね
110:デフォルトの名無しさん
12/10/17 01:35:29.58
>>105
おお、これは面白いな!自分のにも入れとこう。
111:デフォルトの名無しさん
12/10/17 02:04:58.95
だからそれがめんどいんだって
current/1/2/object1
current/1/3/object2
current/4/5/object3
とかなってたらややこいだろ
112:デフォルトの名無しさん
12/10/17 02:09:42.96
あすまん 100までしかみてなかったわ
113:デフォルトの名無しさん
12/10/17 02:11:22.65
>>106
Vimのctrlp.vimなら…おっと、スレチなのでこの辺で。
スレリンク(unix板)
114:デフォルトの名無しさん
12/10/17 02:15:14.38
>>111
その場合だと>>105の使うならばそれぞれ、
git vi 2/o
git vi 3/o
git vi 5/o
で開けるなw
115:デフォルトの名無しさん
12/10/17 14:11:42.17
>>97
ひとりだけ契約して、あとはcontributerとして登録すればよいです。
116:デフォルトの名無しさん
12/10/19 02:12:22.90
リファクタリングに対するコミットってどうやってますか?
一般的にリファクタリングはミスが起きないように
一歩づつ変更すると思います。
fooをbarに変更、
barのメソッドをスーパークラスに移動
引数の順番を変更。
引数をオブジェクトに変更
etc
この一連のリファクタリング作業を一回のコミットで行うと、
変更点が多すぎてレビューが大変になると思います。
しかし一つづつのコミットに分けるのも多すぎな気がします。
できれば、一連の操作を1つのコミットの中で
動画のように再生可能な形でコミットできればと思うのですが。
117:デフォルトの名無しさん
12/10/19 05:35:03.08
一つづつコミットしておいて、
レビューが終わったらrebaseしたらいいじゃん
118:デフォルトの名無しさん
12/10/19 06:46:33.39
一つづつのコミットが多すぎ?なぜ?
各変更点はなるべく小さいほうが、Regressionが見つけやすいんじゃね
119:デフォルトの名無しさん
12/10/19 09:25:12.66
rebaseってそういうときに使うのか?違うだろ?
120:デフォルトの名無しさん
12/10/19 09:52:05.58
rebaseはいろんなことに使える
自分のコミットをFast-forward状態にするためのrebaseはもちろん便利だけど、
ベースを変更しないrebaseでのコミットの整理も便利だよ
コミットをまとめたり逆にコミットをばらしたりさらにはコミットの順番を入れ替えたりとか
121:デフォルトの名無しさん
12/10/19 10:02:12.78
>>116
リファクタリング用にブランチ切って最終的にmerge --no-ff
122:デフォルトの名無しさん
12/10/19 10:05:50.75
うちはレビューのためにわざわざ分割する事はないけど、
レビュー後 merge --squash か rebase -i は使うな。
レビュー反映のコミットも追加されるしね。