1 名前:login:Penguin [2007/12/16(日) 18:40:39 ID:GslAi8rs] ソースコード管理を行うバージョン管理システム、git について語ろう。 あの、リーナス・トーバルズだって、バージョン管理を始めたんだ。 www.kernel.org/pub/software/scm/git/ git チュートリアル (バージョン 1.5.1 以降用) www8.atwiki.jp/git_jp/pub/Documentation.ja/tutorial.html
798 名前:login:Penguin mailto:sage [2010/06/01(火) 20:24:44 ID:WTjgN8Mk] >>792 あ、それと言うの忘れてた。 > git checkcout 862ed98d03863a826dca3246ee61d54264acae57 なら、>>790 も言ってるけど一時的に別のブランチにいるよ。 git branchしてみれば、今までのブランチと別のブランチにいることが分かると思う。 git masterとかやれば元に戻れるんじゃないかな。 元がmasterなのかは知らないけど。
799 名前:792 [2010/06/02(水) 01:34:42 ID:gi9ro0yc] 色々レスありがとうございます。 状況としては、 最近のコミットに 49qayt928t4ht2 と goghpghr9g9grh というのがあったとして(文字列は適当です) 49qayt928t4ht2 が最新なのですが、一つ前のgoghpghr9g9grhに戻したいと思い、 git checkout goghpghr9g9grh としたら、git log しても最新の 49qayt928t4ht2 が表示されなくなり、49qayt928t4ht2のコミットが消えてしまったように見える、 また最新の49qayt928t4ht2に状態を戻したくても、戻した方が分からない、といった感じだったのですが git reflog と git resetのおかげでなんとかなりました。 勉強になります。ありがとうございました。
800 名前:login:Penguin mailto:sage [2010/06/02(水) 05:38:06 ID:tFFCKjtC] >>799 checkout直後なら以前チェックアウトしていたコミットがORIG HEADに格納されてるよ
801 名前:login:Penguin mailto:sage [2010/06/02(水) 23:19:00 ID:epvzW2MP] ORIG_HEADってマージのときに使うものかと思ってた あれ?MERGE_HEADだっけ?
802 名前:login:Penguin mailto:sage [2010/06/03(木) 00:57:02 ID:4mfPiwdf] >>792 色々と突っ込みたい所はあるが、とりあえずチュートリアル読めば?
803 名前:login:Penguin mailto:sage [2010/06/03(木) 08:35:19 ID:dAM44TeX] >>799 git resetを使う状況じゃない。まずは>>798 の内容を理解しよう。
804 名前:login:Penguin mailto:sage [2010/06/03(木) 22:34:29 ID:NRpX3vOy] git の branch コマンドは他のVCSみたいな、いわゆる枝(branch)を作るコマンドじゃないことを理解した方がいい。 単に自分のいる点に目印の旗を立ててるだけ。 commitやreset等で自分が動けば旗も移動する。
805 名前:login:Penguin mailto:sage [2010/06/03(木) 22:37:18 ID:2hMMbzRW] >>804 これの"create"は「作る」という事ではないのですか? $ man git-branch ... NAME git-branch - List, create, or delete branches
806 名前:login:Penguin mailto:sage [2010/06/03(木) 23:35:29 ID:k3O2NdDL] >>805 まあ論理的には「作る」と考えて良いんだけど、、、 内部的には複数のコミットから親として参照されてればそれはブランチと言える というぐらいで、特にbranchコマンドを使わなくても、ある履歴の途中の位置を checkoutして何かコミットすれば分岐になるし、commit --amend とかで やり直ししても以前のコミットと新しいコミットは分岐してる。 ただこの場合古いコミットは一見して行方不明になるけど、branchコマンドは そこに旗を立てて移動しやすかったり自動でGCされないようにしたりしてる感じ。 reset とかいろいろ試してるうちに内部構造が分かるとそう思うようになったかな。
807 名前:login:Penguin mailto:sage [2010/06/04(金) 00:02:52 ID:/Cv0eiGe] 各コミットは親を記憶してるから点から親を遡ることで枝を表現できる ただ子の記憶は無いから自分の子供がどうなったかを辿る簡単な手段は無い checkout等で移動してコミットが消えてるように見えるのはこの為
808 名前:login:Penguin mailto:sage [2010/06/04(金) 06:08:20 ID:PyuP7am3] >>805 自動更新してくれるタグとおもえばよいよ
809 名前:login:Penguin mailto:sage [2010/06/05(土) 11:36:02 ID:aEd5JAax] 実はCVSでも似たようなことになっているんだけど、 自動GCがないということと、リポジトリの実装がファイル 単位なのでcvs adminコマンドで実現しようとすると1コミット に関連するファイルに比例して面倒になる、という点が大きく違う。
810 名前:login:Penguin mailto:sage [2010/06/05(土) 20:57:10 ID:zknULthJ] git svn clone すると Using higher level と言われて取ってこれないんですが、 どうしたらいいんでしょうか? $ git svn clone --prefix svn/ -s svn+ssh://xxx/var/svn/project Initialized empty Git repository in /Users/alice/src/project/.git/ Using higher level of URL: svn+ssh://xxx/var/svn/project => svn+ssh://xxx/var/svn error: git-svn died of signal 13 svn ls すると見えてます。svn co もできます。 $ svn ls svn+ssh://xxx/var/svn/project branches/ tags/ trunk/ バージョン $ git --version git version 1.7.1 試しにローカルに作ったsvnリポジトリに対しては、リポジトリ内のサブディレクトリに 相当するプロジェクトを同様のコマンドで取ってこれます。 $ git svn clone --prefix svn/ -s file:///var/svn/project2 → 成功
811 名前:810 mailto:sage [2010/06/05(土) 23:35:57 ID:zknULthJ] 試行錯誤してたらローカルのsvnリポジトリに対してでも svn+ssh だと失敗 git svn clone --prefix svn/ -s file:///var/svn/project2 → 成功 git svn clone --prefix svn/ -s svn+ssh://localhost/var/svn/project2 → 失敗 git svn clone -s svn+ssh://localhost/var/svn/project2 → 失敗 git svn clone svn+ssh://localhost/var/svn/project2 → 失敗 git svn clone svn+ssh://localhost/var/svn/project2/trunk → 成功 もしかしてssh経由だと最後の方法しかダメ?