トップページtech
984コメント273KB

Git 6

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/05/21(火) 11:26:36.94
ソースコード管理を行う分散型バージョン管理システム、Gitについて語ろう。
Git - Fast Version Control System
http://git-scm.com/

◆関連サイト
Pro Git - Table of Contents
http://progit.org/book/ja/
Git入門
http://www8.atwiki.jp/git_jp/

◆前スレ
Git 5
http://toro.2ch.net/test/read.cgi/tech/1350144612/
0792デフォルトの名無しさん2013/10/10(木) 02:24:32.80
まあ>>790のURLを読めばよい
そこは両者オススメみたいだし
0793デフォルトの名無しさん2013/10/10(木) 02:27:00.73
Gitって循環参照とか出来るの?
コンピューターA
↑参照
コンピューターB
↑参照
コンピューターC
↑参照
コンピューターA

こんな風にしたらどうなる?
0794デフォルトの名無しさん2013/10/10(木) 02:27:29.33
>>775
開発したことがあるならなおさら中央リポジトリの重要性を痛感するはず
0795デフォルトの名無しさん2013/10/10(木) 02:30:29.98
>>793
コンピューターっていうのは特定マシンのリポジトリの意味かな?
0796デフォルトの名無しさん2013/10/10(木) 03:27:48.98
git checkout hoge
git merge master
git checkout foo
git merge hoge
git checkout bar
git merge foo
git checkout master
git merge bar
0797デフォルトの名無しさん2013/10/10(木) 03:41:17.36
ブランチのことか
別に問題ないよ
ただその四つのブランチが共通の祖先のコミットをもってないと困ると思うが
0798デフォルトの名無しさん2013/10/10(木) 06:30:39.80
一人で使うなら好きにしなさい
複数で使うならgitoliteにしなさい
0799デフォルトの名無しさん2013/10/10(木) 08:37:35.32
>>756
その文章の中で
>gitだけではできないこと
ってどれなの?
0800デフォルトの名無しさん2013/10/10(木) 09:05:57.52
何だか知らんがそんなにgitが嫌ならsvnでも使っとけバーロー
0801デフォルトの名無しさん2013/10/10(木) 09:19:58.74
伸びてんなー
0802デフォルトの名無しさん2013/10/10(木) 09:39:39.75
gitだとバージョン番号つけられないね
0803デフォルトの名無しさん2013/10/10(木) 09:44:12.83
この伸びてるのはgit大好きな馬鹿同士じゃないか

>>802
>>531
0804デフォルトの名無しさん2013/10/10(木) 09:44:52.63
タグにバージョンつけてるけど
0805デフォルトの名無しさん2013/10/10(木) 10:38:21.03
>>803
おもしろそう
これを使えば$Id$がつくれるのかな
0806デフォルトの名無しさん2013/10/10(木) 10:53:23.91
9月入った辺りから伸びが凄いな
ビックウェーブ来てる?
0807デフォルトの名無しさん2013/10/10(木) 12:12:48.06
来てますがうちはビッグウェーブに乗るというより押し流されてますよ
開発者の人数だけグラフがスパイラルしているのはなかなかキレイです
0808デフォルトの名無しさん2013/10/10(木) 14:23:39.77
空のリポジトリから作り始める時もmasterじゃなくて適当なブランチ作ってやり始めるのが筋?
0809デフォルトの名無しさん2013/10/10(木) 15:07:32.38
いいえ
0810デフォルトの名無しさん2013/10/10(木) 17:07:38.36
城戸君は新人Webコーダーで聞き間違えが多いタイプ
田中君は人のコードをパクル様なことをするタイプ
こういう二つのタイプの人間がいるとします
この二人にプロジェクトを任せるのですが
城戸君は聞き間違えが多いので本来Aを作るところを間違えてBを作ってコミットしました
そのあと田中君はググって見つけたブログのコードを自分の担当のBにコピペしてコミットしました
こういう場合はどうしたらいいでしょうか?
0811デフォルトの名無しさん2013/10/10(木) 17:15:04.85
> Bにコピペ
これはBを全部書き換えてしまったのかな?
それともBの一部を書き換えたのかな?
0812デフォルトの名無しさん2013/10/10(木) 17:18:42.43
Bのファイルをお互いいじったところはコンフリクトして、
かぶってないところはコンフリクトしません
たぶん
0813デフォルトの名無しさん2013/10/10(木) 17:22:08.09
>>810 = >>812なの?
0814デフォルトの名無しさん2013/10/10(木) 17:26:56.56
>>810
マージするためにgit使ってるんだろ。
0815デフォルトの名無しさん2013/10/10(木) 17:28:28.02
マージしてしまった後に、
城戸君はBをAにどうやって直すべきかって話じゃないのか?
0816デフォルトの名無しさん2013/10/10(木) 17:29:23.27
城戸って珍しい名前だな
じょうど
じょうと
しろと
しろど
変換に出てこない
0817デフォルトの名無しさん2013/10/10(木) 17:31:50.78
城戸=キド
0818デフォルトの名無しさん2013/10/10(木) 17:32:51.28
逆に、城戸をコピーして選択状態にして変換キーでもいいんやで
0819デフォルトの名無しさん2013/10/10(木) 17:33:15.52
>>815
古いBをAにマージするだけじゃないの。

>>816
きど
0820デフォルトの名無しさん2013/10/10(木) 17:46:32.58
正しいAをマージするとたぶん田中くんの修正がコンフリクトするから
それをどうするかってことかね?
コンフリクトしない場合でもやばい感じにマージされる可能性はあるかもだけど
どっちにしろ田中くんと城戸くんで相談だよね

めんどくさければ田中くんの修正がなかったように正しいAをマージしてしまって
田中君にはAに合わせて直した修正を改めてコミットしてもらえばいいかも?
0821デフォルトの名無しさん2013/10/10(木) 21:57:08.65
>>810を読む限り、マージする前の話でしょ

あとは、本来出来上がってるはずのAができあがっておらず、どうしたらいいんだろうっていう問題だよ
城戸君は間違えが多い、一方の田中君はどっかから適当に拾ってくる
納期が迫っている中さあどうしよう?
0822デフォルトの名無しさん2013/10/10(木) 21:59:21.08
納期のことは忘れたほうがいいよ。
理想的なやり方を追求すればいい。

納期の話を含めると、ダメなやり方が答えになるから。
0823デフォルトの名無しさん2013/10/10(木) 22:00:50.81
gitがどうとかいう以前の問題のような
0824デフォルトの名無しさん2013/10/10(木) 22:45:07.29
そんな使えない奴はクビで
0825デフォルトの名無しさん2013/10/10(木) 23:03:10.27
マージする必要あるのか?
二人して同じもの作ったのなら、どちらかを破棄するだけだと思うのだけど。。。
たぶん、Bを破棄して、田中君がAつくるんじゃね?
昼ゴチって感じで
0826デフォルトの名無しさん2013/10/10(木) 23:25:44.16
城戸君がBを revert するだけで済む話に聞こえるけどそうじゃないのかな
0827デフォルトの名無しさん2013/10/10(木) 23:27:37.39
作業がなかったことになったら給料泥棒じゃん
0828デフォルトの名無しさん2013/10/11(金) 00:11:06.14
給料も無くせばいいだろ
08297102013/10/11(金) 02:25:32.11
>>827
ぐだぐだのコードなら、ないほうがまだマシ。
0830デフォルトの名無しさん2013/10/11(金) 06:30:51.70
まずは>>810が日本語を勉強するべき
0831デフォルトの名無しさん2013/10/11(金) 23:18:50.52
.gitと同じディレクトリにsampleディレクトリがあるんですけど
このディレクトリを除外したい場合githubで.人様のgitignore見てたんですが
/sample
sample/
/sample/
って3通りに書き方を見るんですがどれが正しいでしょうか?
0832デフォルトの名無しさん2013/10/11(金) 23:34:46.68
たすけてくださああああああい
これで1版最初にコミットしたところのソースコードが見たくて
git checkout ランダムな文字
ってしたんですが
git logをみたら戻った所以降のコミットのログがありません!
git reflogでランダムな文字列を表示してまた git checkout ランダムな文字 で戻れました
こういうふうに過去のソースコードがみたくて一時的に戻したい場合はどうやるのが正しかったのでしょうか?
0833デフォルトの名無しさん2013/10/12(土) 00:32:15.17
git checkout master
とかブランチ名を指定すればどこからでも戻ってこれるんでない?
あとは
git show 0123456789abcdef:path/to/filename
みたいに書けば特定のコミット時点の特定のファイルをいちいちチェックアウトせずに表示できたと思う
0834デフォルトの名無しさん2013/10/12(土) 00:39:35.45
Git for WindowsのGit Bashで

$ mkdir test
$ cd test
$ git init
$ git config user.name "FOO bar"
$ git config user.email "[email protected]"
$ echo "*.exe" > .gitignore
$ git add .gitignore
$ git commit -m "initial commit"
$ git branch mybranch
$ git checkout mybranch
$ vim hello.c
$ gcc hello.c
$ git add hello.c
$ git commit -m "add hello.c"
$ ls
a.exe hello.c
$ git checkout master
$ ls
a.exe

という具合にやってみたんだけど
mybranchブランチでコンパイルして出来た a.exe がmasterブランチに移っても消えなかったんだけど
mybranchブランチで作ったファイルがmasterブランチでも参照できるのは何でなの?
0835デフォルトの名無しさん2013/10/12(土) 00:46:29.27
add されてない未管理状態のファイルは何もせずに放置される
0836デフォルトの名無しさん2013/10/12(土) 01:08:03.44
>>835
マジか、dクス
じゃあブランチは別のフォルダで作らんとダメなのか
0837デフォルトの名無しさん2013/10/12(土) 01:32:43.62
>>831

/sample/ で。
0838デフォルトの名無しさん2013/10/12(土) 01:48:46.77
>>836
なぜそうなるのか分からん
普通は同じフォルダでいいんじゃないの
0839デフォルトの名無しさん2013/10/12(土) 02:47:20.21
別のブランチ作ってそこで作ったファイルと競合おこさないの?
0840デフォルトの名無しさん2013/10/12(土) 03:07:50.93
>>839
a.exe の事だよね?

$ echo "*.exe" > .gitignore
$ git add .gitignore
$ git commit -m "initial commit"

ここで何してるの
0841デフォルトの名無しさん2013/10/12(土) 03:19:17.49
つまり、競合おこしたくないファイルはバイナリだろうとバージョン管理に入れろってこと?
わかった、そうする
0842デフォルトの名無しさん2013/10/12(土) 06:21:36.68
普通、make cleanとかするだろ。
0843デフォルトの名無しさん2013/10/12(土) 11:28:32.72
権限を750に設定したいphpとhtmlの環境をgitで管理するのってどうすればいいですか?

テストサーバのリポジトリ---gitリポジトリ---本サーバのリポジトリ
みたいな環境で、テストサーバで750でファイルを作成して、コミット、プッシュする
そして、本サーバでプルしたら、別ユーザにも実行権限が付いてしまう

直接、実行環境にプルできたら楽でいいなって思ったんですが
デプロイ用のスクリプト作って、プルした環境からサーバの実行環境に入れなきゃだめ?
0844デフォルトの名無しさん2013/10/12(土) 12:22:10.58
>>843
gitはユーザを区別しない実行可能フラグしか管理しないからデフォルトでは無理じゃないかと
post-receiveフックを使えばpullのときに任意のスクリプト走らせられるから、お望みの動作をするスクリプト書けばいいと思うよ
0845デフォルトの名無しさん2013/10/12(土) 16:10:58.30
>>843
こんなやり方もある
http://stackoverflow.com/questions/10783678/git-shell-script-execute-permissions-enforced
この回答のcleanをsmudgeに変えるといいよ

Git - Git の属性
http://git-scm.com/book/ja/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%81%AE%E5%B1%9E%E6%80%A7
0846デフォルトの名無しさん2013/10/12(土) 16:31:35.04
複数人で作業するときって別の人が編集するファイルを編集したらどうなりますか?
0847デフォルトの名無しさん2013/10/12(土) 16:34:36.46
>>846
別の人が編集する前に編集され書き換わります。
0848デフォルトの名無しさん2013/10/12(土) 21:43:34.68
git clone リポジトリのurl
ってやるとクローンで着ますが、
存在しないurlだと失敗しますよね
なので、そのリポジトリが存在するかしないか(もしくは、cloneで取得できるかできないか)をチェックするだけのコマンドってありませんか?
0849デフォルトの名無しさん2013/10/12(土) 22:27:25.73
ls-remote
0850デフォルトの名無しさん2013/10/12(土) 23:06:08.75
それってgitで始まるurlにも使えるの?
[email protected]:hub2ch/hub2ch.git
みたいな
0851デフォルトの名無しさん2013/10/12(土) 23:11:03.56
git://github.com/〜/〜.git
とかのことだよね?いま試してみたらできたよ。
0852デフォルトの名無しさん2013/10/13(日) 11:19:55.92
http://trac-hacks.org/wiki/GitPlugin
0853デフォルトの名無しさん2013/10/13(日) 11:49:16.26
gitignoreに
/test/
って書いたのに
testディレクトリの中のファイルを編集してからgit statusってやると
modified: test/test.html
modified: test/test2.html
って表示されてしまいます!
このままaddしてcommitしたらtestディレクトリのファイルも記録されちゃいますよね!?
0854デフォルトの名無しさん2013/10/13(日) 11:59:10.37
.gitignoreに
./test/
って書けよ
0855デフォルトの名無しさん2013/10/13(日) 12:06:36.52
>>853
.gitignoreは既にリポジトリで管理対象になってるファイルには効かないよ
ファイルを管理対象にするまえに.gitignoreを書かないとダメ
管理対象から外したいならgit rmしてコミットすれば
その後はそのファイルをいじってもgit statusには出てこなくなる
0856デフォルトの名無しさん2013/10/13(日) 12:08:03.73
>>854
それは駄目だろ
0857デフォルトの名無しさん2013/10/13(日) 12:30:58.56
ちょwwwwうはwwww
git rm test/test.html
ってやったらファイルそのものが消えましたwww
つられました〜〜〜
0858デフォルトの名無しさん2013/10/13(日) 12:40:26.27
>>857
おう悪い
消さずに管理対象から外すコマンドは忘れた
とりあえず消える前のがコミットされてるんだから
checkoutで復活させてくれ
0859デフォルトの名無しさん2013/10/13(日) 12:44:26.17
>>857
--cached
ってか、そんな基本しらねーのかよ本1冊読めよ
0860デフォルトの名無しさん2013/10/13(日) 20:55:20.82
テストファイルってgitで管理するべきですか?
0861デフォルトの名無しさん2013/10/13(日) 21:11:16.71
自動テストを行うコードのことならyes
0862デフォルトの名無しさん2013/10/13(日) 21:13:09.67
>>860
テストファイルが何だかわからないが、Junitとかを使ったテストプログラムのコードとかなら、ソースコードとバージョンを合わせないとだから、管理すべき。
08637102013/10/13(日) 21:33:34.46
>>862
結果はどうしてる?
0864デフォルトの名無しさん2013/10/13(日) 22:06:29.98
>>863
結果という成果物が、ログ、オブジェクトに関わらずgitの管理内に入ることはない
0865デフォルトの名無しさん2013/10/13(日) 22:12:46.00
テストの結果なんて「OK」と(ほか数行)しか書かれてないわけで保持するという発想はなかったな
0866デフォルトの名無しさん2013/10/13(日) 22:21:58.20
failばっかりの状態からバージョン管理をはじめるなら、
OKが増えていくのを見てニヤニヤするためにバージョン管理するのは有りな気がする
いつどのテストが通るようになったかわかるし

全部OKじゃないとコミットを許さないなら、管理する価値はないでしょ
0867デフォルトの名無しさん2013/10/13(日) 22:42:00.60
再生成できるものをリポジトリに入れるのは違和感があるので、指定されたコミットをチェックアウトしてビルド・テストを実行するスクリプトを作ろう
リポジトリに入れてもいい成果物は再生成が面倒or時間がかかるものという認識だ
0868デフォルトの名無しさん2013/10/13(日) 22:51:06.61
このテストいつ通るようになったっけ?
で全履歴を二分木探索でテストスクリプト走らせるとなると、結構な時間がかかるはず
リポジトリに入れるのが気持ち悪いなら、git notesにでも入れときゃいいんじゃね
08697102013/10/13(日) 22:58:59.11
>>867
うちでは、出荷版とかは入れてる。
再作成しても同じバイナリにはならない環境があるからねぇ。
0870デフォルトの名無しさん2013/10/13(日) 23:03:04.42
JavaだけどバイナリはVCSではなくてArtifactoryで管理している。
メインブランチと開発ブランチ、Jenkinsが自動でビルドとテストをして合格すれば
Artifactoryにプッシュする。
0871デフォルトの名無しさん2013/10/13(日) 23:06:16.00
リビルドするたびに、バイナリ変わる環境なんて
メモリエラーとかハードが壊れてるだけ
0872デフォルトの名無しさん2013/10/13(日) 23:07:06.50
>>870
CraftBukkitか?
08737102013/10/13(日) 23:17:17.19
>>871
ビルド日時を埋め込むシステムなんて珍しくないんだが、無知ってこんな分かりやすい餌にも食いつくんだな (w
0874デフォルトの名無しさん2013/10/13(日) 23:34:21.57
珍しくないというか、PE(Windowsのexe)にもあるよね。
0875デフォルトの名無しさん2013/10/13(日) 23:40:33.27
それはそういうソフトだな。
ビルドするたびに、バイナリ変わるビルドツールなんて
コンパイラとしておかしいわ
0876デフォルトの名無しさん2013/10/13(日) 23:42:28.94
PGO使うとバイナリが変わるというか、変えるために使うんだよね。
08777102013/10/13(日) 23:44:51.06
>>875
> コンパイラとしておかしいわ

素人さんはそう言ってりゃいいんだろうけど...
0878デフォルトの名無しさん2013/10/13(日) 23:47:53.23
いったい、どこのマイナーなツール使ってるんだかw
0879デフォルトの名無しさん2013/10/13(日) 23:48:50.76
素人にここまで浸食されてるのってこの業界だけだよね。
大工さんと日曜大工のお父さんじゃだいぶ差があるのに。
金返せと言われても文句言えない。
08807102013/10/13(日) 23:57:10.19
>>878
自分の環境が全てと思ってる奴 ≡ 素人
0881デフォルトの名無しさん2013/10/14(月) 00:00:36.33
>>880
さすがgit玄人ですね
かっこいい^^
0882デフォルトの名無しさん2013/10/14(月) 00:08:45.33
ここで喧嘩しないでよ
>>878-879
とか単なる煽りあいでしょ。せめてgit絡めて話して
0883デフォルトの名無しさん2013/10/14(月) 00:11:56.27
git commit >>710 -m '荒らしてんなボケ'
0884デフォルトの名無しさん2013/10/14(月) 00:29:15.34
OSのヘッダファイルはgitで管理するべきだろうか?
ヘッダファイルが変わるとバイナリ変わっちゃうんだよね
0885デフォルトの名無しさん2013/10/14(月) 00:36:31.41
>>884
ビルド環境はcloneした先で構築すりゃいい
ソース上で管理するなら、それぞれmake -fのターゲットファイルを用意する
READMEに情報かいてるのもあるかな
08868852013/10/14(月) 01:23:28.84
無視してください
0887デフォルトの名無しさん2013/10/14(月) 04:23:20.47
>>863
テスト結果はcommitしない。
欲しくなったら、その版をcheckoutしてまた作ればいいから。
0888デフォルトの名無しさん2013/10/14(月) 04:35:24.27
>>868
二分探索なら履歴の数はそんなに関係なさそうだから、一回のテストが遅いのかな。
そんな時間かかるのに毎回入れるとなると、commit時に時間掛かりそう。たまにしかpushしないリポジトリでのみとっとけばいいのかな。
ナイトリービルドとかの時のテスト結果を上書きしないで、とっておいたほうが良さそう。
0889デフォルトの名無しさん2013/10/14(月) 04:42:27.48
テスト結果のcommitはしたことがないけれども、するにしてもCIツールからだと思うな。
開発者マシン上でのテスト結果なんて信用できないでしょ。
0890デフォルトの名無しさん2013/10/14(月) 09:08:09.31
日付と時刻を付けたファイル名で毎回保存すればいいだけ
0891デフォルトの名無しさん2013/10/14(月) 09:43:44.34
>>887
「そのときのテスト結果」はとっといたほうがいいぞ。
gitに入っているのが環境の全てと言い張れるほど自信ないし。
0892デフォルトの名無しさん2013/10/14(月) 09:54:30.96
とっとくとしてもコミットには含めないかな
コミットIDと対応づけてどっかに保存だ
■ このスレッドは過去ログ倉庫に格納されています