Git 9
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/04/12(土) 13:22:20.98ID:s4x1CSLNGit - 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 8
http://toro.2ch.net/test/read.cgi/tech/1389701817/
0048デフォルトの名無しさん
2014/04/16(水) 03:11:28.56ID:EGmRT2ABSourceTreeとかGitHub/BitBucketとかのサービスで詳細に把握しようと思うことはあるかな。大抵はそこまで把握しなくてもトラブらないけど。
0049デフォルトの名無しさん
2014/04/16(水) 03:16:00.58ID:FwnwH35E0050デフォルトの名無しさん
2014/04/16(水) 03:22:23.47ID:LjaPwUAW0051デフォルトの名無しさん
2014/04/16(水) 03:24:09.57ID:O1uBrWmJGitHubでプルリクエストすればマージ前でも自動テストしてくれるみたいだからリモート環境だけでテストできるんじゃないの
やったことないしどうせ自動化のテストはローカルでしなきゃならんけど
0052デフォルトの名無しさん
2014/04/16(水) 03:40:07.18ID:FwnwH35Eテストコードをしっかり書いているとする。
バグが何処かで混入されたとして、
それを見逃したということはテストコードがなかったということになる。
そこで新たにテストコードを追加する。
さて、このテストコードを使って、どこでバグが混入されたかを
bisectで調べるにはどうしたらいいだろう?
git bisectをするたびにコミットが変わるのはいいんだが、
そのコミットには当然追加されたテストコードは含まれていない。
やばい、酒ははいってて、何を書いているのかわからないwwww
0053デフォルトの名無しさん
2014/04/16(水) 03:40:53.57ID:FwnwH35E0054デフォルトの名無しさん
2014/04/16(水) 03:49:55.54ID:EGmRT2AB上手いこと説明できないが、ツリーがないよりあったほうがマージのやり直しはしやすい気がする。たぶん自分が関わってるプロジェクトの特性上のものだと思う。
まあ、ツリーだけってよりは1個1個コミットを見ていってそのローカルブランチではなにをするつもりだったのかとかを解釈していくという方が重要なのだろうけど。
>>51
インタラクティブなアプリだと自動でのビルドテストがかなり難しいんだよね。
OpenGLとかメディア系ライブラリと各種センサを使ったアプリとかだと、描画が想定通り行われてるかとか、ムービーが正しく再生されてるかとか、
センサの値が正しく反映されてるかとか、そういうものをテストコード書くのが難しすぎる、というか結局人間が解釈しないとOKかNGか判断できないものが
多すぎてTDDしづらいんだよね。ゲームとか典型例なんじゃないかな?
0055デフォルトの名無しさん
2014/04/16(水) 04:03:18.65ID:O1uBrWmJそりゃ無理だな
UIが複雑なのはテストの維持がめんどすぎて割に合わない
0056デフォルトの名無しさん
2014/04/16(水) 12:51:47.35ID:LjaPwUAWgit bisectはコミットされてないdiffを各コミットに適用してくれるから、
テストコードを自動マージできるように書いて
それをコミットしないままbisectすればできるよ
0057デフォルトの名無しさん
2014/04/16(水) 14:21:34.93ID:zACk8w4U露出狂鴨試練
0058デフォルトの名無しさん
2014/04/16(水) 21:49:07.29ID:SSurM9Qyこれgitの開発人たちに公認公式のエイリアスの設定方法って公開してませんかね?
0059デフォルトの名無しさん
2014/04/16(水) 21:52:45.78ID:23qQxnbb大抵の人が設定してるであろう、一般的な alias の一覧みたいなのないかってことかね
0060デフォルトの名無しさん
2014/04/16(水) 22:13:23.97ID:QCJjs0GGこんなのがあったところで使うかよw
そんなの自分の自由
0061デフォルトの名無しさん
2014/04/16(水) 22:59:29.71ID:HsjrRpyw0062デフォルトの名無しさん
2014/04/16(水) 23:18:22.32ID:YDFUIFCV0063デフォルトの名無しさん
2014/04/17(木) 03:15:07.74ID:KNGPRiphサンクス
コミットしないままbisectできたのか。
まあ確かに動き的にはcheckoutしているだけだもんな。
0064デフォルトの名無しさん
2014/04/17(木) 03:18:41.09ID:KNGPRiphsubversionを真似したら?
短いエイリアスがあるから。
gitのコマンドが長いのは、短縮は自分で好きなの
割り当る用だと思ったりもしてるんだけど
なんか理由あるのかな?
0065デフォルトの名無しさん
2014/04/17(木) 13:12:49.12ID:ns8t/lZOst = status
ci = commit
co = checkout
br = branch
dif = diff
difc = diff --cached
lo = log --oneline
lf = log --first-parent
lof = log --oneline --first-parent
0066デフォルトの名無しさん
2014/04/17(木) 13:45:04.02ID:aPfzsLricommitはcだろうが
きめえよ
0067デフォルトの名無しさん
2014/04/17(木) 14:05:07.53ID:vWEx34Yogst = git status -s -b
glo = git log --graph --branches --remotes --pretty=format:'%C(black white)%h%Creset%C(blue bold)%d%Creset %s'
0068デフォルトの名無しさん
2014/04/17(木) 16:24:56.84ID:xYf1zYlhわかる
>dif = diff
まぁ、わかる
>ci = commit
どういうことなの
せめてcmでしょ
0069デフォルトの名無しさん
2014/04/17(木) 16:47:58.48ID:ns8t/lZO俺はかつてCVSユーザだったんだが、
CVSのcommitはciというエイリアスを持ってたんだよ。
SVNもciはcommitのエイリアスになってるだろ?
といってもそもそも何でCVSのcommitがciなんだよ?って話だよな。
CVSは当初、その前に流行した単一ファイルバージョン管理用RCSにかぶせてつかう
ディレクトリツリー管理拡張のためのラッパースクリプトとして登場した。
RCSのコミットに相当する操作はcheck inと呼ばれ、コマンドはciだった。
CVS, SVNはそれを継承してるというわけだ。
現在でも主要なディストロはだいたいRCSのパッケージを持ってて、
インストールすればciコマンドを使えるぞ。
ちなみにRCSのcheckoutは当然coだから使い方はmanを見てくれ。
0070デフォルトの名無しさん
2014/04/17(木) 17:02:55.46ID:x5+myCPx過去の VC の流れで。
0071デフォルトの名無しさん
2014/04/17(木) 17:04:57.52ID:7VV2HzZ+0072デフォルトの名無しさん
2014/04/17(木) 17:32:10.40ID:x5+myCPxhttps://github.com/search?l=ini&q=gitconfig+alias&ref=searchresults&type=Code
わりとみんな同じ感じなんだねえ
0073デフォルトの名無しさん
2014/04/17(木) 17:33:57.98ID:xYf1zYlh調べたらmercurialもciなんだな
0074デフォルトの名無しさん
2014/04/17(木) 17:38:39.61ID:Fx1ijgIadiffはdだ!
0075デフォルトの名無しさん
2014/04/17(木) 17:44:29.46ID:x5+myCPx0076デフォルトの名無しさん
2014/04/17(木) 18:39:15.48ID:ns8t/lZO0077デフォルトの名無しさん
2014/04/17(木) 18:50:05.36ID:gzIoS/KQ0078デフォルトの名無しさん
2014/04/17(木) 18:52:52.00ID:zmGYf3iT危ないコマンドや初心者が過去を隠すために使うようなコマンドをあえて禁止している
0079デフォルトの名無しさん
2014/04/17(木) 18:56:43.52ID:vWEx34Yo0080デフォルトの名無しさん
2014/04/17(木) 20:34:51.97ID:ns8t/lZO0081デフォルトの名無しさん
2014/04/17(木) 21:44:17.51ID:XZy5mn+7前進あるのみ
0082デフォルトの名無しさん
2014/04/17(木) 21:47:12.93ID:KNGPRiph俺は、
bisect bad に bisect-fixed を
bisect good に bisect-unfixed を
割り当ててる。
便利だよ。
0083デフォルトの名無しさん
2014/04/17(木) 22:05:50.07ID:i6eMI8h0[alias]
serve = daemon --reuseaddr --base-path=. --export-all --verbose
stat = status --short --branch
exec = "!exec "
0084デフォルトの名無しさん
2014/04/17(木) 22:10:52.86ID:u3XqYAfLいやーgitをよく知らないままgitで大勢でメンテしているプロジェクトに送り込まれて
しまいまして。
とりあえずgitkとかで表示してみました... うわっ、平行な線が沢山走っている部分が!
なんか宇宙戦艦ヤマトのワープの図を複雑にしたような(たとえが古いか)
線が沢山集中した部分でチェックアウトするともの凄い速度で開発できたりとか
0085デフォルトの名無しさん
2014/04/17(木) 22:23:16.22ID:KNGPRiph沢山あるべきじゃないよ。マージしづらくなるからね。
0086デフォルトの名無しさん
2014/04/18(金) 02:04:45.06ID:G95hrNw/> 線が沢山集中した部分でチェックアウトするともの凄い速度で開発できたりとか
むしろそこは多量のブランチをマージしたところなのでものすごい速度が落ちてるとこじゃないかな
0087デフォルトの名無しさん
2014/04/18(金) 10:26:06.59ID:TiuM1iK+でそのリポジトリを削除するとソースファイルまで削除されるんですが
もちろんブックマークだけ(sourcetreeで)の削除はできるのですが
間違ってハードディスク上のリポジトリを削除してしまったら大変です。
何か対策はあるのでしょうか?それともこういうものなのでしょうか
0088デフォルトの名無しさん
2014/04/18(金) 10:28:30.25ID:V7HQhmWQリモートにあろうがローカルにしかなかろうがリポジトリ物理的に消したらなくなるわな
大事ならバックアップとっといたらいい
0089デフォルトの名無しさん
2014/04/18(金) 10:30:51.17ID:l4m/ooPn0090デフォルトの名無しさん
2014/04/18(金) 10:51:55.78ID:TiuM1iK+0091デフォルトの名無しさん
2014/04/18(金) 11:00:45.77ID:KSddQ8SJ0092デフォルトの名無しさん
2014/04/18(金) 11:01:59.07ID:V7HQhmWQ0093デフォルトの名無しさん
2014/04/19(土) 12:55:58.24ID:7PgX0mPggitkはgit log(というかgit rev-list)と同じ範囲指定が可能だから、
--allで表示が多すぎるなら表示範囲を適切に限定してやればよい。
特定のtopic(ここではmasterから分岐したとする)とmasterにだけ注目すればいいんなら
gitk master..topic (masterから分岐後のtopicのコミットのみ表示)
gitk master...topic (masterから分岐後のtopicのコミットとmasterにマージされたブランチを表示)
とか。範囲指定は複数回可能なので関係する範囲を好きなだけ指定すればよい。
0094デフォルトの名無しさん
2014/04/20(日) 20:26:37.01ID:mILxVbg/.zshrcとか.vimrcとかをつっこんだリポジトリはDropboxにbareで載せてる。
0095デフォルトの名無しさん
2014/04/21(月) 13:00:54.05ID:ZKyIOHr8/*
/.*
このふたつを指定しているのをたまに見かけますが
はじめに/*ですべてのファイルを除外しているので/.*を書く意味は無いと思うんですが何故書くのですか?
0096デフォルトの名無しさん
2014/04/21(月) 14:22:29.42ID:dtgq5rdVシェル由来だね。
0097デフォルトの名無しさん
2014/04/21(月) 16:06:02.61ID:mYIG7FH4クソだなgitって
0098デフォルトの名無しさん
2014/04/21(月) 20:57:12.01ID:1sDt+ic80099デフォルトの名無しさん
2014/04/21(月) 21:13:29.40ID:fKV6ATCG0100デフォルトの名無しさん
2014/04/21(月) 21:48:05.88ID:yaM3rCK50101デフォルトの名無しさん
2014/04/21(月) 22:43:41.18ID:KhXBvEFhVSS、これ最悪でした。
チェックアウトされたままコンパイル通らない状態で担当者休み。どーすんの?
でもMSじゃないと駄目、OSSなんか信用できないとかで泣く泣く使う現場多数。
それに比べるとSubVersionかなりマシだけどオフラインな状態でコミットできない。
ちょっと痛い。
0102デフォルトの名無しさん
2014/04/21(月) 23:08:04.07ID:/9iyZBJ2SVNは何がなんやらサッパリわからないから使えない
0103デフォルトの名無しさん
2014/04/21(月) 23:28:39.44ID:wk0llTNx× SubVersion
○ Subversion
0104デフォルトの名無しさん
2014/04/21(月) 23:37:15.06ID:vVBjDa2Gコミットしたところでローカルにあるだけだからオンラインで他の奴がお前のリポジトリに
アクセスできなきゃ何もかわらんだろアホか
0105デフォルトの名無しさん
2014/04/21(月) 23:51:33.94ID:KhXBvEFh帰社してコミットする時にコメントに10項目だらだら書くの?
やーだー
0106デフォルトの名無しさん
2014/04/22(火) 00:01:10.97ID:4JSOLbvH0107デフォルトの名無しさん
2014/04/22(火) 00:05:36.52ID:DheOpfOv0108デフォルトの名無しさん
2014/04/22(火) 00:32:53.01ID:ysn+k/fU0109デフォルトの名無しさん
2014/04/22(火) 00:48:34.17ID:9W1A4/eNいわゆるシェルは.(ドット)で始まるファイルは隠しファイルとしている
隠しファイルは ls *.conf とかで表示されない (.hoge.conf とか)
そんな時に rm *.conf して普段表示されてないファイルが消えるのは困る
だから * だけでは隠しファイルにマッチしないようになっている
ちなみに git が内部でどう処理してんのかは知らん
0110デフォルトの名無しさん
2014/04/22(火) 13:52:48.51ID:+yEK9mtt0111デフォルトの名無しさん
2014/04/23(水) 05:15:19.40ID:7ZWtOh9Zcommit B
commit C
commit D
commit E
commit F
と順番に作業して
あとから B から D をまとめて
commit A
commit b(B-D)
commit E
commit F
としたいときはどうすれば・・・
0112デフォルトの名無しさん
2014/04/23(水) 05:24:18.61ID:kDpoyMyg↓のsquashというやつで出来るんじゃないの?
Git - 歴史の書き換え
http://git-scm.com/book/ja/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E6%AD%B4%E5%8F%B2%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88#コミットのまとめ
> # s, squash = use commit, but meld into previous commit
0113デフォルトの名無しさん
2014/04/23(水) 07:20:48.07ID:fIp3qZsIrebase -i
0114デフォルトの名無しさん
2014/04/23(水) 09:40:59.20ID:T4x0zu0j0115デフォルトの名無しさん
2014/04/23(水) 20:35:59.48ID:7vo5B08ZB-Dに分割したい時どうしてる?
俺はrebase -i
0116デフォルトの名無しさん
2014/04/23(水) 22:04:37.40ID:59LgjvrDただ慣れないと指定にちょっと戸惑う
>>111みたいにB以下をいじりたい場合だと rebase -i A ってしなくちゃいけないんだよな
それと、まとめたり順番入れ替えるだけなら操作は簡単だけど、バラす場合はちょっと操作がややこしい
0117デフォルトの名無しさん
2014/04/24(木) 00:12:45.07ID:6IEmJN8m逆に表示するオプションあるけどグラフ表示とは併用できませんし。
0118デフォルトの名無しさん
2014/04/24(木) 01:22:42.87ID:cdLHxk0Krebase -iの指示書は、前のコミットにまとめるとかの指定することを考えると古い順に並んでたほうがわかり易い気がする
まあ、自分は慣れてしまったからかもしれないが
0119デフォルトの名無しさん
2014/04/24(木) 01:29:19.68ID:SDYiDObTrebase -i B^
0120デフォルトの名無しさん
2014/04/24(木) 05:27:42.49ID:6xlhO1bi0121デフォルトの名無しさん
2014/04/24(木) 13:18:49.88ID:QakcezKL最新のタグをつけたコミットだけプッシュする方法
2つおしえてください
0122デフォルトの名無しさん
2014/04/24(木) 13:19:34.50ID:QakcezKL0123デフォルトの名無しさん
2014/04/24(木) 13:22:26.51ID:V8z90YIWsqush
0124デフォルトの名無しさん
2014/04/24(木) 13:47:51.32ID:JOpp0cve0125デフォルトの名無しさん
2014/04/24(木) 19:02:31.15ID:yOTIc0ZO0126デフォルトの名無しさん
2014/04/24(木) 21:18:41.68ID:hPYav21ogit filter-branch --env-filter 'GIT_COMMITTER_DATE="Thu, 01 Jan 1970 09:00:00 +0900
"; GIT_AUTHOR_DATE=$GIT_COMMITTER_DATE' --all
0127デフォルトの名無しさん
2014/04/24(木) 22:02:19.45ID:6xlhO1bi0128デフォルトの名無しさん
2014/04/24(木) 22:18:20.71ID:0H30XzcZgit checkout -b test
>Switched to a new branch 'test'
git branch
>何も表示されない
git checkout test
>error: pathspec 'test' did not match any file(s) known to git.
なんもコミットされてないとこうなるんですがどうしてこうなるんですか?
0129デフォルトの名無しさん
2014/04/24(木) 22:21:42.53ID:hPYav21oその状態だと、HEADはrefs/heads/test向けのsymbolic-refになっているが、
そもそも指すべきコミットがないのでrefs/heads/testは存在しない。
よってbranchも何も表示しないし、checkoutもできない。
0130デフォルトの名無しさん
2014/04/24(木) 22:23:42.17ID:0H30XzcZ一番最初のコミットが汚れるのがいやですね
0131デフォルトの名無しさん
2014/04/24(木) 22:25:13.61ID:6xlhO1bi俺は、とりあえず空コミットを作る。
かもしれないし、作らないかもしれない。
0132デフォルトの名無しさん
2014/04/24(木) 22:26:57.87ID:hPYav21oつまりコミット無し状態でブランチを複数作りたいということ?
0133デフォルトの名無しさん
2014/04/24(木) 22:31:15.84ID:0H30XzcZコミットなし状態からブランチを分けて開発したいんです
基本的にmasterは汚したくないのです
0134デフォルトの名無しさん
2014/04/24(木) 22:33:01.48ID:6xlhO1birebaseできないからなんだけど?
それぐらい、というかそれ以上に
よく使う機能だぞ。
汚くしないためにrebaseがある。
0135デフォルトの名無しさん
2014/04/24(木) 22:37:44.72ID:hPYav21o129で言ったようにHEADが存在しないrefを参照していればgit initした状態と同じなのだから、
二個目のブランチを作るときにgit checkout -bではなく
git symbolic-ref HEAD refs/heads/branch_name してから開発を進めればいいじゃない
0136デフォルトの名無しさん
2014/04/24(木) 23:47:09.80ID:T/Y/fuz3そこまで潔癖ならマージもしないだろうからブランチじゃなくてリポジトリを分けたら?
0137デフォルトの名無しさん
2014/04/25(金) 00:27:14.58ID:kupFdBxu1つ目のcommitがあって、それがtestブランチだとする。
が、masterはこのcommitから辿れる親コミットも指してないし、どれも指していない。
fast forward mergeできない状態だけどいいの?
どうせmasterはなにかしらコミットした段階で一番汚されてなくたってそのコミットを指してしまうのだから、コミットしてからチェックアウトしてもいいじゃん。
0138デフォルトの名無しさん
2014/04/25(金) 03:08:01.24ID:XQM8U6nM0139デフォルトの名無しさん
2014/04/25(金) 04:07:01.58ID:zu0sgmwaつか空の.gitignoreくらい作ってからでも汚れとは思わんぞ
0140デフォルトの名無しさん
2014/04/25(金) 04:20:32.33ID:jzYptMLV個人の趣味でやってるならVCSは好きなのを使えるのにね
0141デフォルトの名無しさん
2014/04/25(金) 04:23:50.66ID:4klH39dY0142デフォルトの名無しさん
2014/04/25(金) 05:28:33.42ID:cdj1D6xv俺はローカル全部svnだわ
0143デフォルトの名無しさん
2014/04/25(金) 08:52:14.28ID:xiFjVo8G3つ前に巻き戻してからブランチするのでしょうか
最後の2つのコミットも念のために残したいのでブランチにしたいのです
具体的には
最後の2つのコミットの変更が破棄になったけど
念のために残したい
という状況です
0144デフォルトの名無しさん
2014/04/25(金) 11:14:49.10ID:4klH39dYブランチ作ればいいじゃん。
0145デフォルトの名無しさん
2014/04/26(土) 02:05:43.27ID:pkQNyj+Nrebaseはブランチ取り込むときにontoと組み合わせて使うことの方がおおいなぁ。
コミットログの都合もあるから履歴整理にはほとんど使ってない人がここに。
0146デフォルトの名無しさん
2014/04/26(土) 02:08:06.72ID:/GEUo84h普通にマージかチェリーピックすればいいだろ。
そのための機能なんだから。
0147デフォルトの名無しさん
2014/04/26(土) 02:26:05.50ID:pkQNyj+N複数のブランチ平行したときとかontoつかってカットする感じに履歴いじらないとFFになってくれないことが多かった。
■ このスレッドは過去ログ倉庫に格納されています