git スレッド
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
2007/12/16(日) 18:40:39ID:GslAi8rsあの、リーナス・トーバルズだって、バージョン管理を始めたんだ。
http://www.kernel.org/pub/software/scm/git/
git チュートリアル (バージョン 1.5.1 以降用)
http://www8.atwiki.jp/git_jp/pub/Documentation.ja/tutorial.html
0784login:Penguin
2010/05/17(月) 22:06:20ID:6iXl9CjZサンクスです。それでいかせていただきます。
0785login:Penguin
2010/05/18(火) 22:33:48ID:6442L1FLgit clone で落としてきた.gitは
CVSや.svnと同じようなものと思いがちやね。
>>747を見てバッカじゃねーのとか
思ったけど意外にこの勘違いを抱えたまま
毎回.gitを消してcloneしなおしてる人いるのかね。
0786login:Penguin
2010/05/18(火) 23:21:35ID:ID2y3O4eそうしてきた人にとってはコピーしてきたリポジトリまで
消しちゃう無駄よりも、「ちゃんと動くことが分かる」状態
に戻ることのほうが重要だもの。
0787login:Penguin
2010/05/19(水) 00:23:37ID:zJinMQgPcheckoutコマンドとは随分意味が違う。 「ちゃんと動くことが分かる」状態に
どうやってもどせばいいんだろうと探している時、コマンドのリストの中の
checkoutコマンドの説明を見ようとは普通思わないんじゃないかな。
0788login:Penguin
2010/05/19(水) 00:33:38ID:rEVii6OVunstageと分けてもいいと思う
0789login:Penguin
2010/06/01(火) 02:42:24ID:ke5Egb8Tgit log すると一番最新のコミットと2番目に新しいコミットが見れなくなってしまいました。
もしかして、checkoutはコミットしたものを取り消してしまう危険なコマンドなんでしょうか?
最新のものに戻したい場合はどうすればいいのでしょう・・
てっきりsubversionのrevertと同じようなものだと思って使ったのですが・・
gitのrevertはリビジョンを戻して新しくコミットしなおす感じのようですが、
最近のコミットを取り消さず、単純にファイルを巻き戻すだけのコマンドはないのでしょうか?
教えていただけると嬉しいです。
0790login:Penguin
2010/06/01(火) 03:08:28ID:ib2iuIgtここまで的確に逆のこと言ってると釣りに見えるな。
git checkout HEAD~2 とかやったのなら、名無しブランチに居るだけだから
元のブランチをcheckoutすれば元どおり。
git revert は指定したコミットを逆パッチしたコミットを作ってくれる。
後戻りはしない。
当たり前にドキュメント読んだほうがいいよ。Subversionとは概念が違う。
ttp://progit.org/book/ja/
ttp://www8.atwiki.jp/git_jp/pages/27.html
0791login:Penguin
2010/06/01(火) 06:48:15ID:nEJNHOMYという指定はできるのでしょうか。ただfooとだけ指定すると
warning: refname 'foo' is ambiguous.
リポジトリはcvsimportで作ったもので、ファイルによってfooが
ブランチの場合とタグの場合があるためにこういう状態になって
います。
0792789
2010/06/01(火) 12:22:08ID:7rDC0XFuレスありがとうございます。
自分がやったのは
git checkcout 862ed98d03863a826dca3246ee61d54264acae57
のような感じなんですが
あげて頂いたドキュメントを見ると、checkoutの説明のところに
「また、これが危険なコマンドであることも知っておかねばなりません。」
のように書かれていました。
やはり最新のコミット自体が消えてしまったように思えるのですが・・
0793login:Penguin
2010/06/01(火) 13:52:15ID:3Zl/kziyその下に、
>削除したブランチへのコミットや --amend コミットで上書きされた元のコミットでさえも復旧することができます
って書いてあるよ。
0794login:Penguin
2010/06/01(火) 14:35:10ID:rOsiehIqローカルブランチはheads/foo、タグはtags/fooで明示的に指定できますよ
0795login:Penguin
2010/06/01(火) 18:49:32ID:zlmZbFtlreflogというものがあってだな
0796login:Penguin
2010/06/01(火) 20:05:14ID:WTjgN8Mk> 「また、これが危険なコマンドであることも知っておかねばなりません。」
の部分は作業ディレクトリの情報が消えて、最新のコミットに戻されたって話だよ。
俺はgit以外のvcsをよく知らないけど、
subversionでも、レポジトリと個々人の作業ディレクトリってあるんだよね?
上の話は作業ディレクトリがレポジトリに戻されちゃって、
あなたの作業は消えましたよ、って話だから危険って書いてあるんじゃないのかしら。
0797login:Penguin
2010/06/01(火) 20:17:52ID:WTjgN8Mkそうなら、
git diff HEAD~2 -- (あるファイル)
っていうのはどう?
どうしてもcheckoutしたいならcheckoutした後、
git diff master.. -- (あるファイル)
でもいい
0798login:Penguin
2010/06/01(火) 20:24:44ID:WTjgN8Mkあ、それと言うの忘れてた。
> git checkcout 862ed98d03863a826dca3246ee61d54264acae57
なら、>>790も言ってるけど一時的に別のブランチにいるよ。
git branchしてみれば、今までのブランチと別のブランチにいることが分かると思う。
git masterとかやれば元に戻れるんじゃないかな。
元がmasterなのかは知らないけど。
0799792
2010/06/02(水) 01:34:42ID:gi9ro0yc状況としては、
最近のコミットに
49qayt928t4ht2
と
goghpghr9g9grh
というのがあったとして(文字列は適当です)
49qayt928t4ht2
が最新なのですが、一つ前のgoghpghr9g9grhに戻したいと思い、
git checkout goghpghr9g9grh
としたら、git log しても最新の
49qayt928t4ht2
が表示されなくなり、49qayt928t4ht2のコミットが消えてしまったように見える、
また最新の49qayt928t4ht2に状態を戻したくても、戻した方が分からない、といった感じだったのですが
git reflog と git resetのおかげでなんとかなりました。
勉強になります。ありがとうございました。
0800login:Penguin
2010/06/02(水) 05:38:06ID:tFFCKjtCcheckout直後なら以前チェックアウトしていたコミットがORIG HEADに格納されてるよ
0801login:Penguin
2010/06/02(水) 23:19:00ID:epvzW2MPあれ?MERGE_HEADだっけ?
0802login:Penguin
2010/06/03(木) 00:57:02ID:4mfPiwdf色々と突っ込みたい所はあるが、とりあえずチュートリアル読めば?
0803login:Penguin
2010/06/03(木) 08:35:19ID:dAM44TeXgit resetを使う状況じゃない。まずは>>798の内容を理解しよう。
0804login:Penguin
2010/06/03(木) 22:34:29ID:NRpX3vOy単に自分のいる点に目印の旗を立ててるだけ。
commitやreset等で自分が動けば旗も移動する。
0805login:Penguin
2010/06/03(木) 22:37:18ID:2hMMbzRWこれの"create"は「作る」という事ではないのですか?
$ man git-branch
...
NAME
git-branch - List, create, or delete branches
0806login:Penguin
2010/06/03(木) 23:35:29ID:k3O2NdDLまあ論理的には「作る」と考えて良いんだけど、、、
内部的には複数のコミットから親として参照されてればそれはブランチと言える
というぐらいで、特にbranchコマンドを使わなくても、ある履歴の途中の位置を
checkoutして何かコミットすれば分岐になるし、commit --amend とかで
やり直ししても以前のコミットと新しいコミットは分岐してる。
ただこの場合古いコミットは一見して行方不明になるけど、branchコマンドは
そこに旗を立てて移動しやすかったり自動でGCされないようにしたりしてる感じ。
reset とかいろいろ試してるうちに内部構造が分かるとそう思うようになったかな。
0807login:Penguin
2010/06/04(金) 00:02:52ID:/Cv0eiGeただ子の記憶は無いから自分の子供がどうなったかを辿る簡単な手段は無い
checkout等で移動してコミットが消えてるように見えるのはこの為
0808login:Penguin
2010/06/04(金) 06:08:20ID:PyuP7am3自動更新してくれるタグとおもえばよいよ
0809login:Penguin
2010/06/05(土) 11:36:02ID:aEd5JAax自動GCがないということと、リポジトリの実装がファイル
単位なのでcvs adminコマンドで実現しようとすると1コミット
に関連するファイルに比例して面倒になる、という点が大きく違う。
0810login:Penguin
2010/06/05(土) 20:57:10ID:zknULthJどうしたらいいんでしょうか?
$ 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 → 成功
0811810
2010/06/05(土) 23:35:57ID:zknULthJgit 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経由だと最後の方法しかダメ?
0812login:Penguin
2010/06/06(日) 22:17:11ID:KNE6oozw--trunk trunk オプションを適用したらどうなる?
0813810
2010/06/06(日) 23:06:25ID:DDm/Y5Pcレスありがとうございます。
次の2つが正しく動作するのを確認後、
$ svn co svn+ssh://localhost/var/svn/project2/trunk project2
$ git svn clone --trunk trunk file:///var/svn/project2
svn+ssh と --trunk trunk の組み合わせを試したんですが >>810 のときと同様のエラーになります。
$ git svn clone --trunk trunk svn+ssh://localhost/var/svn/project2
Initialized empty Git repository in /Users/alice/src/project2/.git/
Using higher level of URL: svn+ssh://localhost/var/svn/project2 => svn+ssh://localhost/var/svn
error: git-svn died of signal 13
が、あれこれ試していたらここで中途半端にできた project2 ディレクトリ(中身は.gitだけ)を削除せずに、再び
git svn clone --trunk trunk svn+ssh://localhost/var/svn/project2
を実行するとcloneできました。
つまり --trunk trunk 付きで二回実行するとcloneできました。
それなら -s をつけた場合も二回実行すればいけるかと、試したんですが二回目も失敗します
二回目は「error: git-svn died of signal 13」だけが表示されます。
0814810
2010/06/07(月) 00:13:59ID:J3cMfgEohttp://cooldaemon.tumblr.com/post/71989299/subversion-git-svn-clone-git-svn
ローカルに作ったSVNリポジトリのHEADはリビジョン1なんですが、
上のサイトを参考に、git svn clone に失敗したあとにできたディレクトリに移動したあと
git svn fetch を実行したところファイルを取ってくることができました。
0815login:Penguin
2010/06/08(火) 13:31:10ID:rxszYzgCローカルのリポジトリフォルダで直接ソース修正し,
git add, git commit -m 'hoge', git push,
という手順を踏むのは、正しい手順なのでしょうか?
ブランチを切ってそれをmerge、というのも見つけたのですが、
違いが何かがまだ理解できません。ローカルの作業フォルダを
別に複製してそこで作業する、という意味ですか?
ググってもいまいち飲み込めず・・・用語が難しくて理解しづらいです。
0816login:Penguin
2010/06/08(火) 17:27:44ID:ioTeze1hよくわからなかったら、既存のものをforkしたのでなければ、
bitbucketを使いましょう。
0817login:Penguin
2010/06/08(火) 17:29:09ID:8e1WnVu/はい。正しいです。ブランチは新しい機能とメインの開発を分けて開発したい場合に使ったりします。
ローカルリポジトリ内で完結するので新しくフォルダをつくる必要はないです。branchとcheckoutコマンドでいろいろ遊んでみるとよいかも。
0818login:Penguin
2010/06/08(火) 17:35:19ID:2UFah327メインのソースツリーが subversion で管理されており、ローカル環境では、git-svn を使って、ソースのやりとりを行っています。
あるとき、ローカルのツリーを壊してしまったのか、
git checkout master
を実行すると、
and have XXXX and YYYY different commit(s) each, respectively.
という行が表示されています。
さらに、git pull を実行すると、git pull が失敗します。
ローカルのソースツリーを正常な状態にしたいのですが、ローカルにあるソースを全て削除し、さらに .git ディレクトリも削除したのち、改めて、git svn clone をしないといけないのでしょうか。
リビジョン YYYY までの修正分までは残しておき、YYYY + 1〜XXXX までのリビジョンを削除したのち、改めて、git svn rebase で、YYYY + 1 以降の差分を取得したいのですが、その様なことは可能でしょうか。もし、可能でしたら、どうしたらできるのでしょうか。
どうかよろしくお願い致します。
0819login:Penguin
2010/06/08(火) 17:57:50ID:KwHWNnWZそのメッセージはマージ対象のブランチと現在のブランチが分岐してるよ、
って教えてくれてるんだけど、git-svnでもそれ出たっけな?
それにgit pull って、git-svn では使わないよ?
実際、svnのことは一旦忘れて、ドキュメントちゃんと読んだ方がいいよ。
ttp://progit.org/book/ja/
ttp://www8.atwiki.jp/git_jp/pages/27.html
大体一緒でしょ、っていうつもりでノリで触ってるとかえって回り道。
0820815
2010/06/08(火) 18:00:17ID:rxszYzgCいえ、githubにしろって言われたもので仕方なく・・・
>>817
ありがとうございます。助かります。
>ローカルリポジトリ内で完結するので新しくフォルダをつくる必要はない
ということは、checkoutするとブランチ間で異なるファイルがごっそり
差し替えされるということですね。試してみます。
0821login:Penguin
2010/06/08(火) 18:21:21ID:KwHWNnWZ何回ProgitとatwikiのURL貼らせんだよ。
他の便利ソフトみたいに、つまづいたとこを逐次誰かに教えて貰って、
とりあえず使えるようになればそれでOK、っていうものとは違うんだって
ことぐらい分かれよ。分散型使ったことなくてsvnしか知らないようなら
尚更ダメだろ。ソースコード管理するのに手探りみたいな状態でやってて
不安じゃないのか?
たいして時間かかんないから、ドキュメント読もうぜ。Progitも公式チュートリアルも
親切丁寧に書いてあるから。はあはあ。
0822login:Penguin
2010/06/08(火) 18:33:01ID:ioTeze1hCVSからさわっていれば、ブランチもタグもすんなり理解できるのだが。
0823login:Penguin
2010/06/08(火) 21:49:57ID:2UFah327>>821
>>822
819 さんに教えて頂きましたドキュメントなどを参考して、ローカル環境を戻してみます。
git svn rebase とするべきところ、ついつい、git pull と打ってしまう私が悪いんで。
また、さっきもやってしまって、マージできないとエラーが出たソースを元に戻していました。
0824login:Penguin
2010/06/11(金) 04:51:28ID:fuz3kvBd<環境>
$ uname
CYGWIN_NT-5.1
$ git --version
git version 1.7.0.4
歴代のコミットの状態を別のディレクトリへcheckoutできないものでしょうか。
今は、コミットIDの一覧からすべてをtar ballに吐き出して全部展開しなおす、
という手順をとっています。
もっと楽な方法(git clone [commit ID]とか)ご存知ではないでしょうか。
0825login:Penguin
2010/06/11(金) 05:10:03ID:2NWqNXbxgit-checkout-indexでできるよ
0826login:Penguin
2010/06/11(金) 08:34:44ID:Ce5oaCgsディレクトリで展開するone-liner
git log --format=%h |while read h; do git archive --format=tar --prefix=$h/ |gtar -C $CHECKOUT_ROOT -xf -; done
各ディレクトリでもgitの操作をしたいならgit clone -sでリポジトリを
作ってからそこでcheckoutするようにしたらいいと思う。
0827login:Penguin
2010/06/11(金) 12:49:38ID:CxOtHYvFありがとう。svn exportというのは意図したコマンドのようなのですが、
git-checkout-indexのヘルプにはコミットID指定の引数が見当たらないような。
>>826
なるほど。あー。--outputオプションの意味がわかった気がしました。
せっかくなんで昔見つけたtipsを活かしてみました。
ttp://whileimautomaton.net/2009/05/08003459
export-all = "!$SHELL -c ' \n\
cnt=1 \n\
git log --format=%h --reverse |while read h; do \n\
git archive --format=tar --prefix=$(printf %03d-%s/ $cnt $h) $h |tar -C ../hoge -xf - \n\
cnt=`expr $cnt + 1` \n\
done \n\
' __dummy__"
勝手に変えたところ
・git archive に$hを渡した。エラーになったので。
・gtar->tar。入っていなかったので。
・コミットは時系列順に、3桁連番をつける。
今のところ
・吐き出す先が../hoge固定
・なにがなんでも全コミットが対象
ですが、今日のところは満足なので放っときます。
有難う。楽しかったです。
0828login:Penguin
2010/06/11(金) 14:01:17ID:xMk4QMQlgit commit -m c2
git commit -m c3
としたときの次のコミットを c3 に混ぜるには
git commit --amend
ですが、c2 に混ぜるにはどうやるんでしょう?
0829login:Penguin
2010/06/11(金) 16:33:46ID:CxOtHYvFttp://progit.org/book/ja/ch6-4.html
0830828
2010/06/12(土) 20:32:34ID:EYPWrV4Vそのサイトを参考にやったらなんとかできました。ありがとうございます!
一応、自分用の実験メモを貼っときます。
$ echo x > x1.txt; git add .; git commit -a -m c1
$ echo x > x2.txt; git add .; git commit -a -m c2
$ echo x > x3.txt; git add .; git commit -a -m c3
c2 に含めたい作業分を c4 としてとりあえずコミットする(コミットしないと git rebase できなかったので)
$ echo x > x4.txt; git add .; git commit -a -m c4
c2 が何個前か確認すると3つ前だとわかる
$ git log HEAD~3..HEAD --oneline
e4b2fdb c4
cf77615 c3
09e1d42 c2
それを引数に git rebase -i を実行する
$ git rebase -i HEAD~3
エディタが起動して c2 c3 c4 の順に出ているので下のように c4 の pick を squash に変更して c2 の直後に移動させて終了すると
pick 09e1d42 c2
squash e4b2fdb c4
pick cf77615 c3
再びエディタが起動して c2 と c4 が出てくるのでコミットメッセージを調整して終了する。
再び確認するとc2とc4が一緒になっていることがわかる(コミットメッセージを c2c4 にしたので)
$ git log HEAD~3..HEAD --oneline
0fec832 c3
53d09e5 c2c4
61b0400 c1
0831login:Penguin
2010/06/12(土) 21:25:08ID:MYEOj4or0832login:Penguin
2010/06/12(土) 22:25:59ID:qHF7b2tGブランチを作ったりrebaseしたりすると使わなくなるaliasだと思う。
0833login:Penguin
2010/06/17(木) 22:46:57ID:ic50UB3Y0834login:Penguin
2010/06/19(土) 15:28:13ID:AdBXeY0EここはLinux板だからプログラム板行った方が良いんでない?
0835login:Penguin
2010/06/19(土) 17:18:17ID:e4H00FQJ0836login:Penguin
2010/06/19(土) 18:13:51ID:4IVjSb/tTortoiseGitにgit-svn機能が追加されたのは0.8.1.0からだそうだが、
あなたのバージョンはいくつなわけ?
0837login:Penguin
2010/06/19(土) 23:13:28ID:EutOiIFEム板にgitスレがない
つーかなんで>>1はここに立てた…?
リーナスが作ったからか。そうか。
0838login:Penguin
2010/06/19(土) 23:25:04ID:4f8lOGK6msysgitのgitkは文字化けするから助かる
0839login:Penguin
2010/06/19(土) 23:30:52ID:5cDyCRiO2007年の時点だと、Linuxでしかまともに使ってる人居なかったんじゃないか
0840login:Penguin
2010/06/20(日) 00:31:12ID:cdOp7QHwム板にSVNならあるよ、ってこっちにもあるね。
0841login:Penguin
2010/06/20(日) 22:04:20ID:7uPWjQgSってやった後、コミットする前にgit checkout -f 〜ってやったら、
当然追加したFileは消えてるよね。\(^o^)/
これって、復活させることは無理?
要するに、消えたファイルをサルベージしたいんです...(T^T)
0842login:Penguin
2010/06/20(日) 22:07:50ID:1ShQeJBQ0843login:Penguin
2010/06/20(日) 22:13:59ID:7uPWjQgSadd *.cs
なんて一括で追加したものだから...
いい週末になりました。(゜Д゜)
0844login:Penguin
2010/06/20(日) 22:46:22ID:/lqjlFiM$ git init; touch .gitignore; git add .gitignore; git commit -m 'init'
Initialized empty Git repository in /home/a/tmp/test-git/.git/
[master (root-commit) 8f89495] init
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 .gitignore
$ echo hogehoge > fuga
$ git add .
$ ls
fuga
$ git checkout -f master
Already on 'master'
$ ls
$ LANG=C tree .git/objects
.git/objects
|-- 82
| `-- e3a754b6a0fcb238b03c0e47d05219fbf9cf89
|-- 8f
| `-- 894951217914f4a29681fba7f7917acc034322
|-- e6
| `-- 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
|-- e9
| `-- bc11025c28829eedf6d30cd3b65628648cad5f
|-- info
`-- pack
$ git show e9bc11025c28829eedf6d30cd3b65628648cad5f
hogehoge
0845login:Penguin
2010/06/21(月) 03:55:25ID:g1rTD290そっか、indexに入れたのが残ってるのか!
>>843
>いい週末になりました。(゜Д゜)
サルベージがんばれ!
0846login:Penguin
2010/06/21(月) 21:41:56ID:GDaRrD9aありがとぉ〜〜。
> ファイルそのものは .git/objects にころがってるけど探すのが大変ですねー
これで思い出しました。
数日前にgit stashで検索したときに見つけたこのページ↓
ttp://d.hatena.ne.jp/t-wada/20090407/p1
このページをもとにgit fsck --cacheなどの出力から「〜blob」を抽出し、
それを順次git showしたら、なんだかそれっぽいものが出てきた〜〜(^○^)
ということで、おかげさまでサルベージ完了です。
いい週明けになりました。(^-^)
取り急ぎお礼まで。
0847login:Penguin
2010/06/23(水) 04:04:24ID:JeKYkEUMディレクトリ間違ってGITROOTで
find ./ -type f|xargs -i nkf -w -Ls --overwrite {}
やってしまった。オプション間違ってるし。
$ git log
error: non-monotonic index .git/objects/pack/pack-13ad494e745c9bd63ad500c1a376db3b34848631.idx
error: inflate: data stream error (invalid code lengths set)
fatal: object 9e521bc6c6454973b0d2df293bbe6288ae1e9156 is corrupted
$ git fsck
error: non-monotonic index .git/objects/pack/pack-13ad494e745c9bd63ad500c1a376db3b34848631.idx
error: inflate: data stream error (invalid literal/lengths set)
fatal: object 006d1163b9f7c9ee57bde708ada9e791a769bdc8 is corrupted
さすがにこれはもうアウト?
0848847
2010/06/23(水) 09:14:25ID:LED7N0iF$ git reset
でもだめだ…
.git/objects/00とかの下のコミットID名(?)をgit showしても一緒だよ。
おろろーん
0849login:Penguin
2010/06/23(水) 13:37:25ID:vPPSucp00850login:Penguin
2010/06/23(水) 20:53:37ID:RwfTLv2f0851847
2010/06/24(木) 16:37:14ID:zb2GzD4D途中まではサーバリポジトリにあったから、途中の履歴とブランチは諦ましたとさ。
0852login:Penguin
2010/06/24(木) 23:46:17ID:PrxiwgIJこれを、過去の履歴として最初のコミットより前に登録することってできる?
0853login:Penguin
2010/06/25(金) 00:01:43ID:icPu4CVCその古いコードからはじまる歴史を作るのが良いんじゃね。
その歴史をもったリポジトリを正にしてしまう。
0854login:Penguin
2010/06/26(土) 00:44:08ID:cyQi64aOでも、歴史はある時点のを基点として、進んでいってる。
つまり、遺産が見つかる度にリポジトリを作り直すってこと?
0855login:Penguin
2010/06/26(土) 04:17:55ID:w2I5qyES過去を改竄した上に、現在に至る道筋を全て書き換えるのだから、そうするしかないね。
ただ歴史の参考書として使うのが目的であれば、遺産専用のリポジトリを作って、
現実の流れとは切り離してみたら?
0856login:Penguin
2010/06/26(土) 09:06:18ID:fDYu/oxGちとめんどいが、リポジトリをまとめることできるよ
0857login:Penguin
2010/06/26(土) 09:48:49ID:H6FlpyjE0858login:Penguin
2010/06/26(土) 09:52:47ID:/z21ANsp0859login:Penguin
2010/06/26(土) 11:29:49ID:H6FlpyjE0860login:Penguin
2010/06/26(土) 11:56:07ID:w2I5qyES0861login:Penguin
2010/06/28(月) 03:34:04ID:dFIHaLjh起点のあやふやなリポジトリなんてあっちゃいけない。
0862login:Penguin
2010/06/28(月) 13:32:46ID:AeUZNcLY0863login:Penguin
2010/06/28(月) 21:27:15ID:M8SBBxn0具体的には、git commit を使うの? それとも違うコマンド?
パッチ管理システムのgitが過去に向かって遡るように
できるとするとどのコマンドを使うのだろか。謎だ。
0864login:Penguin
2010/06/28(月) 21:49:22ID:ZdGP9BRk古いソースのアーカイブとかが見つかったのなら、その時点のコミットまで戻って
ソースを展開してコミット、で続きはrebaseで改竄、かな。
次のコミットのコンフリクトが激しい場合、そのコミットはresetで無理やり
作ることになるかも。
0865login:Penguin
2010/06/29(火) 08:40:40ID:RKOTmQc0まとめておいて、始点終点の接続をtagでわかりやすくしておくのが無難じゃ
ないかな。
0866login:Penguin
2010/06/29(火) 09:14:18ID:mAh632T50867login:Penguin
2010/06/29(火) 10:44:08ID:6afYXK7c0868login:Penguin
2010/06/29(火) 12:19:34ID:VJOkvPml今まで git で管理されていなかったプロジェクトを引き継いで、引き継いだ時点から git で管理しています。
# ので、歴史は進んでいます。
しかも圧縮されたソース一式を、メールでやりとりしていたという状況があって、
それが、後から後から「XX月XX日時点のソースはこうでした」なんて送ってくるのです。
大抵そのときは、「XX月XX日時点では問題は無かった」なんて言われるもので、diff もとりたいわけです。
他人の歴史を取りこめる git なら、なんかできるんじゃないかな、と思ったのです。
0869login:Penguin
2010/06/29(火) 15:03:57ID:mAh632T5そっか、、、大変だね。
俺なら、過去専用リポジトリを作って、けっこう真面目に歴史つくりなおすと思うな。
reset、rebaseがちゃんと使えるようになれば、そんなに面倒でもないし、
歴史の改竄はたまにやるので、慣れてる。
ただ、差分見るだけだったらgitじゃなくてもdiffするだけでも取れるし、
とりあえずgitの使い方を学んでみたらいいと思う。
0870login:Penguin
2010/06/29(火) 15:27:33ID:6afYXK7c0871login:Penguin
2010/06/29(火) 18:00:28ID:8zZUzhs0gitにも同じオプションあるよ
0872login:Penguin
2010/06/29(火) 18:08:05ID:65UOE5ID試してないけど、git commit にも同じ --date オプションがある。
0873login:Penguin
2010/06/29(火) 22:47:08ID:6afYXK7cThanks. 1.7 から?
http://www.kernel.org/pub/software/scm/git/docs/RelNotes-1.7.0.txt
0874login:Penguin
2010/07/09(金) 12:12:28ID:A4ulNFz6レポジトリ名の変更ってどうすればよいのでしょうか?
/home/ore/project というレポジトリを
/home/common/project にクローンして、
/home/common/project の方をorigin にして
/home/ore/project の方は ore という名前のレポジトリにしたいんです。
今は /home/ore/project が originになっていて
pushとかcloneで originはすでに存在しますみたいなエラーが出ます。
どなたか教えていただけると幸いです。
0875login:Penguin
2010/07/09(金) 13:24:28ID:+O87Fylaリポジトリの名前というものは無いのでディレクトリをリネームしてOK。
あとgit-remoteのドキュメントを読めばわかる。Pro Gitやatwikiあたりも。
http://www.kernel.org/pub/software/scm/git/docs/git-remote.html
0876login:Penguin
2010/07/09(金) 14:11:35ID:A4ulNFz6あれ、すいませんなんか勘違いしてるのかもしれないのですが、
じゃあ例えば
/home/dareka/project
というレポジトリがあったとして、
/home/ore/project を /home/dareka/project にpushするときは
git push dareka
みたいにすることができて、
この場合のdarekaがレポジトリ名だと思ったんですが、違うんですかね?
こういうことがしたい場合はどうすればよいのでしょう?
0877login:Penguin
2010/07/09(金) 14:39:37ID:+O87Fyla勘違いとかじゃなくてドキュメント読まないと分からないよ。
それはリモートの名前で、パスに別名を付けたようなもの。
0878login:Penguin
2010/07/09(金) 16:26:29ID:A4ulNFz6すいません、追加でもう一つ質問したいのですが、
中央レポジトリの作り方を調べていて
http://d.hatena.ne.jp/hirose31/20090325/1237984133
このページを見たのですが、gitを使うユーザーに
中央レポジトリに書き込むgroupの権限を付与するということは、
その権限を付与されたユーザーは中央レポジトリの.git/objectsや.git/logs
のようなディレクトリを自由に編集・削除できてしまってことなんでしょうか??
0879login:Penguin
2010/07/09(金) 17:56:50ID:+O87Fylaそうだね。つまり権限のある誰かがシェルを介して中央を破壊することは可能。
ただし分散してるからそう問題にはならない。
またリポジトリをsharedにしておくとFastForward以外はpushできなくなるので
通常の操作では破壊できなくなる。
自由にシェルを使わせるのが嫌ならgitosisという手がある。
てかこれもProGitに書いてある。いろいろ心配する前に一通りドキュメント嫁。
0880878
2010/07/12(月) 12:11:38ID:FAAvT4oMおかげさまでとりあえず最低限運用できるところまではいけましたので、
教えていただいたとおりこれからProgit読んでみようと思います。
ありがとうございましたm(_ _)m
0881login:Penguin
2010/07/15(木) 10:50:37ID:p+4lqNUQ0882login:Penguin
2010/07/15(木) 16:20:27ID:NrmRtNGnファイルのパーミッション管理したいと思ったらcapistranoとかで
書いたタスクファイルをgitで管理するのがセオリーですかね?
0883login:Penguin
2010/07/15(木) 16:26:02ID:HC2fsnSk■ このスレッドは過去ログ倉庫に格納されています