トップページ⇒linux
984コメント325KB

git スレッド

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin2007/12/16(日) 18:40:39ID:GslAi8rs
ソースコード管理を行うバージョン管理システム、git について語ろう。

あの、リーナス・トーバルズだって、バージョン管理を始めたんだ。
http://www.kernel.org/pub/software/scm/git/

git チュートリアル (バージョン 1.5.1 以降用)
http://www8.atwiki.jp/git_jp/pub/Documentation.ja/tutorial.html
0133login:Penguin2008/09/13(土) 22:26:25ID:yne4uVAN
>>132
git help
0134login:Penguin2008/09/15(月) 01:43:26ID:Vn95ZDDR
The Git User's Survey 2008
http://www.survs.com/survey?id=M3PIVU72&channel=2WXE4BVTW8
0135login:Penguin2008/09/15(月) 21:12:16ID:autoD5Br
せっかくの分散管理なのに、pushしたら自分の変更内容とかログが全部あがって
恥ずかしい思いをしたよ。
最初の変数がかなりマニアックだったとか、コメントに入れてた人生の悩みとかばれまくり。

で聞きたいんだが、手元でがしがし変更→commitしている場合、その途中ってみんなどうしてるの?
ぜんぶpush?
なんかいい方法あったら教えて。

0136login:Penguin2008/09/15(月) 21:30:13ID:RrauyvJB
push用のブランチ作って置くんでは?
やったことないけど
これなら公開できると思ったらpush用ブランチに
merge?マージだと履歴も逝ってしまうっけ?
0137login:Penguin2008/09/16(火) 14:00:17ID:sfm/svzZ
つーかコメントに余計なこと書くなよ。
0138login:Penguin2008/09/17(水) 07:07:39ID:mi6NTA+s
古いchangesetの最初の方を掃除することは可能でしょうか。
いまファイルサーバ上のツリーを記録するためにmercurialを
使っているんですが、mercurialにはそういう機能はないので
(MQ用のコマンドstripはあるがそれは直近の数changesetを
消すもの)結局移し替えのためのスクリプトを書いて対応しました。
gitにそういう機能があればhg->git移行するんですが...
0139login:Penguin2008/09/19(金) 00:47:51ID:gbQDBJFb
>>138
Mercurialでもqimport→qfold→qdeleteでできるよ。
めんどくさいけど。
0140login:Penguin2008/09/19(金) 22:53:44ID:oBiMratP
>>139
$ hg qimport -r 1
abort: revision 1 has unmanaged children
0141login:Penguin2008/09/22(月) 01:27:56ID:lsYav/dy
>>140
$ hg qimport -r 1:tip
$ hg qgoto 1.diff
$ hg qfold 2.diff 3.diff
$ hg qpush -a
$ hg qdelete -r qbase:qtip
0142login:Penguin2008/09/22(月) 01:40:43ID:lsYav/dy
スマン、ここgitスレか。
スレ違いだったな。
01431382008/09/23(火) 00:27:41ID:1BYKayXP
>>142
なるほど、勉強になりました。バイナリファイルが混じってる
時は--gitがないとえらいことになる、というのも分かりました。

ところでgitだったらそういう操作は可能でしょうか。
0144login:Penguin2008/09/23(火) 15:08:29ID:T3gMcMGA
git remote add bob /home/bob/myrepo
で作った「bob」を/home/bob/myrepo2に変更したいんだけど
どうすればいいの?
0145login:Penguin2008/09/23(火) 16:42:01ID:BgTvVXV1
一旦消して追加しなおす?
ローカルでリモート使ったことないけど、、、
リモートの概念は自分のワーキングコピーからアクセスできるprefixを
簡単に使うことができるようにする為のもの、と理解してるんだけど。
0146login:Penguin2008/09/24(水) 09:59:21ID:dxz6iP6w
remote -dとかで消せるかな
試してないけど
0147login:Penguin2008/10/01(水) 00:27:09ID:R6cOiuz/
git clone で例えば home/red/blue/yellow と取ってきたとして、
加えて git checkout origin/colors でブランチ "colors"に居ますと。

その後の作業で、いくつかのディレクトリでブランチをmaster/colorと切り替えてたんですが、
全ディレクトリのブランチを一気にmasterにする方法ってありますか?
0148login:Penguin2008/10/02(木) 10:48:37ID:jWmFY2RS
git introduction, yugui Ustream.TV: git introduction rails meeting @ tokyo.
http://www.ustream.tv/recorded/746377
0149login:Penguin2008/10/10(金) 16:24:54ID:s0rmxUVr
git age .
0150login:Penguin2008/10/12(日) 06:30:09ID:jJgFADl+
ttp://d.hatena.ne.jp/kinneko/20081004/p4
0151login:Penguin2008/10/18(土) 03:07:31ID:dDb45WJS
git
0152login:Penguin2008/10/23(木) 01:32:11ID:HvfmsSww
http://www.kernel.org/pub/software/scm/git/docs/RelNotes-1.6.0.3.txt
0153login:Penguin2008/11/04(火) 13:32:06ID:3alaTQXX
addしたファイルの一部を、あ〜これ別の修正だなーと思ってcancelしたいん
だけど、どうすればいいかわかりますか?

checkoutすると修正差分消えちゃうし、stashの部分的versionがあれば
いいのかもしれませんが。

まぁ、diff取って手patchでもいいので、今回はそれでやりますが、
後学のために教えてください。
0154login:Penguin2008/11/04(火) 14:30:15ID:pgRYNcfN
>>153
git reset
0155login:Penguin2008/11/04(火) 23:09:57ID:3alaTQXX
>154
ありがとうございます

0156login:Penguin2008/11/05(水) 00:32:36ID:l+PE2hcd
>>153
それよくあるわー
あるファイルをいじってる最中に関係ないバグなんかを見つけて、
つい流れでそのままやっちゃうんだよね。
でもコミットする時には別々にしたくなる...
俺の場合、修正が少ない時は、エディタでundo出来るようにしつつ2回に分けてコミット、
修正が複数ファイルだったり込み入ってる時は、stash使ったりdiff出して後からpatchしたりしてるな。
0157login:Penguin2008/11/14(金) 23:25:39ID:Op12tx9f
http://sourceforge.jp/forum/forum.php?forum_id=16362
0158login:Penguin2008/11/14(金) 23:29:20ID:4rtpLX5i
gitはじまったな。hgとの戦いもこれで決着したか?
0159login:Penguin2008/11/14(金) 23:48:00ID:Lmgx2Pjw
本家 sf.net はまだ git をサポートしてないよね。
この点では sf.jp が先行しているんだ。
0160login:Penguin2008/11/15(土) 06:24:15ID:PSPQtBpR
tortoiseが無いから決着無理でしょ。
0161login:Penguin2008/11/15(土) 18:00:52ID:MUmWX/Lu
あるコミットの親コミットのidはgit log -1 foo^1とかでわかるんだけど、
あるコミットの子コミット一覧をなるべく高速に得る方法ってある?
0162login:Penguin2008/11/22(土) 09:30:29ID:ZDTHO6y7
>>159
ほんとはこういうプリミティブな分野ほど保守的なはずだけど
svn が出てからと言うもの乱世になっちゃった感があるね。
そう言う意味では svn の功績も大きいかも。
そんな中で日本は一般の追従が早かったりするのかな?
ただ sf.jp が勇み足ってこともあるかもしれないけどw
0163login:Penguin2008/11/22(土) 22:19:54ID:f114SqWJ
>>161
原理的に無理なんじゃないの?
コミットすると、その親のレポジトリに通達する仕組みが無いと
0164login:Penguin2008/11/25(火) 21:33:58ID:2oYcDe4N
>>163
mercurialには`hg children'っていうコマンド(extension)が
あるけど、そういう機能のことじゃない?
0165login:Penguin2008/11/29(土) 21:53:13ID:x6WDXIQW
カーネルにおけるリグレッションの特定/ユメのチカラ
http://blog.miraclelinux.com/yume/2007/10/post_d748.html
0166login:Penguin2008/12/12(金) 11:43:38ID:M6DfFnZx
「git add .」の時にemacsのバックアップファイル(hogehoge~)を含まないようにするのはどうすればいい?
0167login:Penguin2008/12/12(金) 14:32:02ID:WlMynC7N
>>166
.gitignoreに「*~」って書いとく
http://www8.atwiki.jp/git_jp/pub/Documentation.ja/user-manual.html#ignoring-files
0168login:Penguin2008/12/12(金) 23:20:38ID:fQQDEn/S
fast-forwardって「早送り」って意味だよな... > wiki
0169login:Penguin2008/12/13(土) 13:26:24ID:OASQvN2r
>>167
ignoreあったのか、�dくす
0170login:Penguin2008/12/14(日) 08:48:06ID:Z9GwfQdj
http://code.google.com/p/tortoisegit/
0171login:Penguin2008/12/14(日) 12:48:29ID:x3iOnWd3
>>170
wktk
0172login:Penguin2008/12/20(土) 01:31:20ID:vKNATyou
質問なのですが

svnでいうチェックアウト(svn co)はgit cloneで合ってますか?
gitではユーザ名を登録しますが、ここで登録したユーザ名を頼りにチェックアウトできますか?

自分で調べた内容は、 http://www8.atwiki.jp/git_jp/pub/Documentation.ja/tutorial.html を見て
「共同開発における git の利用」で git clone /home/alice/project myrepo ってコマンドを探せたくらいです
0173login:Penguin2008/12/20(土) 02:56:48ID:rjvGH0/G
>>172
git cheat sheet でググレカス
0174login:Penguin2008/12/20(土) 09:37:26ID:ei1zjot9
現在mercurialでwebデータのスナップショットをとっています。
ignoreファイルで管理対象にしたくないファイルのパターンを
指定してhg commit -A すると、消えたファイルは削除扱い、
新しいファイルは追加扱いでうまくやってくれるんですが、これを
gitでやるにはgit statusの出力をスクリプトで処理するしかない
でしょうか。
0175login:Penguin2008/12/20(土) 20:34:52ID:D7NqFLzp
add .
commit -a
でいいのかな?
0176login:Penguin2008/12/25(木) 17:46:05ID:waBObvDn
1.6.1キタ━━━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(  )━(゚  )━(∀゚ )━(゚∀゚)━━━!!
0177login:Penguin2008/12/25(木) 20:41:00ID:Lvzi1Kt9
>>176
ほんとだ。
http://git.or.cz/ にはまだ出てないけど、Tagは昨日打たれてるんだね。
さっそくビルドしてみよっと。
0178login:Penguin2008/12/25(木) 21:51:01ID:xGFcU4xY
クリスマスプレゼントきてたか。
俺もビルドしてIYH!!
0179login:Penguin2008/12/28(日) 10:56:17ID:M6Jmnnag
は?
0180login:Penguin2009/01/07(水) 13:35:45ID:yljPTwi+
どーもくんwwwww
0181login:Penguin2009/01/07(水) 22:12:42ID:w9oQRMMI
そういやGit、ドーモくんパクってるな。
なんかみたことあるなーとは思てたけど。
0182login:Penguin2009/01/08(木) 00:35:09ID:Lnbl1Hh0
きっと、ライセンス問題に業を煮やしたリーナスが
新キャラクタを一から作り始めると見た
0183login:Penguin2009/01/08(木) 18:22:06ID:ZbvVG/Dm
で新キャラのライセンスもGPLなんかな。
世界中で使われまくりんぐ
0184login:Penguin2009/01/08(木) 21:38:12ID:+tvvOsmO
とりあえず年末にやっていたどーもくんテレビシリーズは面白かった。
0185login:Penguin2009/01/12(月) 21:00:52ID:WcSLRQ7m
git-cloneをしてもエラーが出てできません。どなたかお助けください。

環境
Ubuntu_1 こいつに"mysite"リポジトリがある(git init で作ったリポジトリ)
Ubuntu_2 こいつにgit-cloneをさせたい

Ubuntu_02でコマンド
:git clone ssh://name@Ubuntu_01/home/name/git/mysite/

で結果がこうなる
remote: Counting objects: 366, done.
remote: Compressing objects: 100% (150/150), done.
remote: Total 366 (delta 262), reused 296 (delta 213)
Receiving objects: 100% (366/366), 53.82 KiB, done.
Resolving deltas: 100% (262/262), done.
error: Trying to write ref HEAD with nonexistant object 73f8...(省略)
fatal: Cannot update the ref 'HEAD'.

このようなエラーが出て、mysiteフォルダが作成されませんでした。
Ubuntu_1のHEADのハッシュは73f8...です。

不思議なのが、nonexistant(nonexistentの間違い? 存在しない)といわれても、Ubuntu_1側でlogを見ても内容はあるように思えるのですが。謎です。
どなたか解決方法をご存知ありませんか。よろしくお願いします。
0186login:Penguin2009/01/12(月) 21:05:09ID:WcSLRQ7m
OSとgitのバージョンを書き忘れていました。すいません
Ubuntu_1(Ubuntu8.04.1) : git version 1.5.4.3
Ubuntu_2(Ubuntu8.10): git version 1.5.6.3

です。gitの最新では問題ないとか、そういうものなんでしょうか・・・
0187login:Penguin2009/01/12(月) 22:47:45ID:Uq2UYoFZ
--no-checkoutでやってみたらどうなる…?
0188login:Penguin2009/02/16(月) 23:10:31ID:YaLIe5U3
こないだネカフェで漫画読んでたら、隣の席の人がマック取り出してなんかやり始めた。
しばらくたってチラ見したら、Gitチートシート見ながら使い方勉強してるようだった。
emacsでメモ取りながら。
Railsのおかげか?マックの人にも浸透してきてんだねー
0189login:Penguin2009/02/17(火) 00:20:11ID:6D8Af0Ge
gitを使うような開発者がマックを選ぶようになったというほうが近いかと
0190login:Penguin2009/02/17(火) 00:51:17ID:ju3lrvVQ
そのおかげかどうか知らんが、Rubyの開発もsvnからgitに移行しろと
ぎゃーぎゃー騒ぐ連中がrubyのMLでノイズをまき散らしている(た)

0191login:Penguin2009/02/17(火) 01:50:48ID:p0vzD+Qg
まぁ、そうしょっちゅう変更されても困るけどな。

未だにCVS使ってるプロジェクトがあることを考えると、
まぁSVNへの移行はそれなりに適切だったよな。

すれ違いスマソ
0192login:Penguin2009/02/17(火) 21:51:55ID:mqqNODDH
最近人気のVCSって大体リポジトリの相互変換機能があるんで
svnだからどうとかgitだからどうとかってあまり問題ないん
じゃないかと思うんだけど... 騒いでるのって実際自分では開発
してる人なのかな?
0193login:Penguin2009/02/18(水) 02:42:16ID:/eQIK6gR
>>192
クライアントだけみても結構違いはあるよ

というか、むしろリポジトリ変換できるからどれでもいいだろと言う人の方が
自分で開発してるのか疑わしい
0194login:Penguin2009/02/18(水) 07:55:24ID:DFCGO0mb
>>189
漏れもmac使いだけど、多い日には8割ぐらいX11で作業してるなぁ
linux板で言うことじゃないけど、最強のunix osだと思ってる
0195login:Penguin2009/02/18(水) 08:09:04ID:m9oJRtIs
ギャグ?
目悪くなるよ、あれ。
0196login:Penguin2009/02/18(水) 11:17:34ID:83SU7AOt
macbook air使ってる人見たことあるけど、
パワポの起動に数十秒かかっててわろた。
0197login:Penguin2009/02/18(水) 12:43:10ID:/eQIK6gR
AirはAppleへのお布施だってばっちゃが言ってた
0198login:Penguin2009/02/18(水) 12:54:38ID:XFrEXlX0
Windowsは目に優しいのにな
0199login:Penguin2009/02/18(水) 19:20:17ID:d2HDJA0J
Windows -> MSゴシック代
OSX -> ヒラギノ代
0200login:Penguin2009/02/18(水) 23:34:07ID:0GUjr6IS
>>193
>クライアントだけみても結構違いはあるよ
違いがないとは書いてないよ。問題がないとは書いたけど。

>というか、むしろリポジトリ変換できるからどれでもいいだろと
>言う人の方が自分で開発してるのか疑わしい
なんでそこで「言う人の方が」とか出てくるんだろう...
リポジトリ変換の手段があれば普段の開発は最も自分に都合がよい
VCSを使える。プロジェクトのリポジトリを移行するのは単なる変換
以外のエネルギーが必要なんだよ(commitlogとかリポジトリのミラーとか
開発支援のためのスクリプトやドキュメントの修正とか)。その労力や
時間は開発にまわしたほうが合理的。
0201login:Penguin2009/02/19(木) 00:18:13ID:PdrPyNp0
>>200
相互変換つっても、git-svn使ってるけどかなり寂しい状態だからなぁ…
使ったことないけどhgやbzrとならいい感じにやり取り出来るんだろうか。
0202login:Penguin2009/02/19(木) 01:00:15ID:EG8D4dSl
git-svnはたまにclone中にSEGVることがあってちょっと困る。
どうも変換できないパターンが存在するらしいのだが、詳細が不明。
0203login:Penguin2009/02/19(木) 01:45:08ID:ytISsoJv
>>202
gentoo user なら、

Per Gentoo bugs #223747, #238586, when subversion is built
with USE=dso, there may be weird crashes in git-svn. You
have been warned.

って、message がデルよ。
0204login:Penguin2009/02/19(木) 07:31:39ID:EG8D4dSl
>>203
Debianだけど、もしかしたら同じかもしれない。豚々。
0205login:Penguin2009/02/21(土) 13:27:13ID:4lfOqpcB
git使いたいけどまわりにCVSしか使ったことないのがいるので、
まずはsvnに移行したよ。
自分自身は、git-svnつこてる。

CVSから一足飛びにgitを使ってもらうのは、酷かなと
0206login:Penguin2009/02/21(土) 13:39:00ID:yqrw3Axq
cvs を理解して使えてるなら、git ぐらいすぐに使えるようになると思うけど。
0207login:Penguin2009/02/21(土) 13:52:33ID:4lfOqpcB
そうか?
CVSは難しいからね。
A: CVS使い
B: CVS,SVN両使い
C: CVSは忘れたSVN使い、gitは少し

こんなメンバーで開発してるんだが、
A、Bにpush,pullを教える自身がなかったというか
Cも共同開発系操作は怪しかったので

svnになってしまった。ちょっとチキンだったか
0208login:Penguin2009/02/21(土) 15:02:07ID:Bpq3TsWG
gitをしばらく使ってみて、リモートリポジトリを用意することになりました。

ローカルA
ローカルB
リモートリポジトリ

とありまして、ローカルAにmaster、v0.1の二つのブランチがあります。

ローカルAからリモートには、push --allですべてのブランチをリモートにおきましたが、
ローカルBからリモートへのpullはmasterしか行えない気がしますが、どうなんでしょうか。
理想は、リモートを通してすべてのローカルリポジトリにブランチの共有を行いたいのですが、どんな操作方法があるでしょうか?
よろしくお願いします。
0209login:Penguin2009/02/21(土) 15:27:28ID:vsW8bIWn
>>208
話がいまいち飲み込めないんだけど、
そのリモートをcloneじゃダメなん?
0210login:Penguin2009/02/21(土) 17:17:05ID:Bpq3TsWG
>>209
ああそうか、cloneのことを忘れていました。ありがとうございます。
0211login:Penguin2009/02/21(土) 17:47:07ID:vsW8bIWn
>>210
cloneというか、git remote add でいつでもリモートの追加は可能だよ。
権限に問題がなければ、remoteにpushすることもできる。
0212login:Penguin2009/02/21(土) 21:53:30ID:Mctk+V93
cvsやsvnにはwindowsで使えるクライアントがあるから・・・
0213login:Penguin2009/02/21(土) 22:56:24ID:4lfOqpcB
全部emacsから使えるが何か?
0214login:Penguin2009/02/22(日) 00:56:10ID:T3tENWac
>>212
tortoisegitdozo-
0215login:Penguin2009/02/22(日) 03:05:15ID:Xj5AqDY8
>>207
ブランチの扱い考えると CVS な人は SVN より GIT の方が
なじみ易いんでは?
0216login:Penguin2009/02/22(日) 14:26:08ID:mBjWyYz+
確かにsvnはリビジョンがブランチも本流も共通だったり、
気持ちわるいところはある
0217login:Penguin2009/02/22(日) 15:03:08ID:1XxXXSjk
こないだ久々にCVS使おうとしたらさっぱりワケワカんなくなってたよ…
CVSのブランチってファイル毎じゃなかったっけ。今となってはもう無理な気がする。
0218login:Penguin2009/02/22(日) 19:13:59ID:8lvMl2P/
>>216
それがsubversionのいいところ。
たとえばあるブランチの開発がすすんでそっちを本流にしたくなった場合、
trunkにマージするという断絶ではなく
本流を切り替えるという操作がそのままできる。
0219login:Penguin2009/02/22(日) 23:21:39ID:mBjWyYz+
>>218
それ気持ち悪い
ブランチ担当者が1ファイル毎にcommitするとか、
コンパイルも通らないソースcommitしてくれたりして、
怪しいリビジョンが増えんだよね。svn

gitだったらブランチ替えるのもrebaseすれば
問題ない
0220login:Penguin2009/02/23(月) 01:45:32ID:7ybypk05
>>219
使い方が悪い場合にツールに文句付けても仕方ないな。
0221login:Penguin2009/02/23(月) 08:47:31ID:tJXsAqHt
>>218 のようなケースは分散型ではそれこそ
「本流にしたくなったブランチを本流とみなす」
だけになるのではなかろうか。
0222login:Penguin2009/02/23(月) 09:12:05ID:PfEahPoc
本来のmasterブランチを別名に改名して別のブランチをmasterに改名すればいんじゃね?
0223login:Penguin2009/02/23(月) 22:04:17ID:RXJ8Zkdl
すみません、教えてください。
git pull したときに、一部のファイルだけ、自分の修正を破棄してリモートのファイルをそのまま適用することは
できないのでしょうか?
SVNで、updateしてコンフリクトした時の tf みたいなイメージです。
0224login:Penguin2009/02/23(月) 22:33:08ID:Abtbk8hJ
git reset?
0225login:Penguin2009/02/23(月) 22:56:28ID:RXJ8Zkdl
あー、いや、そういうんじゃなくて、ソフトの翻訳をしていて、ja.poだけは自分で修正するんですが、
make update-poとかすると、他の言語のpoファイルも更新されてしまいます。
それやっちったあとにリモート側でpoファイルが更新されるとカオスになります。
なので、コンフリクトした時にマージとかしないで、リモート側(かローカル側かどっちか)を採用みたい
なのができないかなと。
0226login:Penguin2009/02/23(月) 23:31:25ID:3S3xpgxH
>>220
gitだったら、自分専用になるから他のブランチのcommitポリシー
関係なくなるじゃん。
まともになったらpullしてやんよと言うだけで、
教育する手間がいらんということだ。
0227login:Penguin2009/02/23(月) 23:47:39ID:qE2tArP5
>>223
git mergeのドキュメントを--strategyあたりでgrepすると良いと思う。
git pull = git fetch + git mergeね。
0228login:Penguin2009/02/24(火) 22:25:50ID:7lWKoCOb
>>225
>make update-poとかすると、他の言語のpoファイルも更新されてしまいます。
他の言語のpoファイルを更新しないようにMakefileを修正する。
0229login:Penguin2009/02/26(木) 21:09:00ID:c1Dg6ivC
>>223
http://gitready.com/advanced/2009/02/25/keep-either-file-in-merge-conflicts.html
タイムリーなtipsが
0230login:Penguin2009/02/28(土) 18:19:24ID:tKEdSpX5
>>223
もどしたいファイルはcheckoutすればいいだけじゃね?
あとは自分の修正はstashするとか色々
0231login:Penguin2009/03/04(水) 22:33:23ID:qIzLJZaT
FTPに1.6.2正式版来ました
0232login:Penguin2009/03/06(金) 23:57:38ID:op+ZMKgY
git-cloneとgit-remote addとgit-svnを使い分けてると

 このフォルダで更新するためのコマンドなんだっけ?

とミスることが多発するんだけど、こういうのって同じコマンドで
管理できないんでしょうか?今は

- git-clone の場合 -> git-pull で更新
- git-remote の場合 -> git-remote update で更新
- git-svn の場合 -> git-svn update で更新

とバラバラで、しかもlsしただけでは判定できないしで
誤実行しては.git/config調べて「ああそうだった」の連発です。

もしかしてもっと便利な統合コマンドがあったりするでしょうか?
■ このスレッドは過去ログ倉庫に格納されています