1: 2011-07-28 (木) 06:33:39 yuji |
現: 2020-12-26 (土) 15:07:53 yuji |
| Linusは,トランスメタ時代にCVSを使えと言われて,その時にCVSを憎むほど嫌いになったらしい。Subversionに対しては,史上最大の無意味なプロジェクトであると思っているとの事。SubversionがCVSの改良というスタンスで開発された訳が,その理由になっている :-D | | Linusは,トランスメタ時代にCVSを使えと言われて,その時にCVSを憎むほど嫌いになったらしい。Subversionに対しては,史上最大の無意味なプロジェクトであると思っているとの事。SubversionがCVSの改良というスタンスで開発された訳が,その理由になっている :-D |
| | | |
- | **インストール [#e0bea0ae] | + | *インストール [#e0bea0ae] |
| # yum install git | | # yum install git |
| でインストールした。 | | でインストールした。 |
| user.email=yuji@yeno.homeip.net | | user.email=yuji@yeno.homeip.net |
| | | |
- | **使い方 [#h058b63f] | + | *使い方 [#h058b63f] |
- | ***作業領域をgitで管理対象にする [#ifb5a1e6] | + | **作業領域をgitで管理対象にする [#ifb5a1e6] |
| hogehoheディレクトリ以下をgitで管理する。 | | hogehoheディレクトリ以下をgitで管理する。 |
| $ cd hohehoge | | $ cd hohehoge |
| でトラックするようにする。addコマンドはいろいろな意味があって,新しいファイルのトラック開始・ファイル衝突時のマージなどのマーク付けなんかで使用するみたいだ。 | | でトラックするようにする。addコマンドはいろいろな意味があって,新しいファイルのトラック開始・ファイル衝突時のマージなどのマーク付けなんかで使用するみたいだ。 |
| | | |
- | その後,まだリポジトリに変更を確定してないので,コミットする。 | + | その後,まだリポジトリに変更を確定してないので,コミットする。コミットされるのは,addコマンドを実行したファイルに対してのみになる。 |
| $ git commit -m "最初のコミット" | | $ git commit -m "最初のコミット" |
| これで,コミットされる。 | | これで,コミットされる。 |
| + | いちいちaddコマンドするのは面倒なこともある。その時には, |
| + | $ git commit -a -m "次のコミット" |
| + | と-aオプション付きでコミットすると,add処理を自動的にやってくれる。 |
| | | |
- | ***普段の流れ [#hddb2a26] | + | よくやるのは,commitした後を早まったというか変更するファイルがまだ有った時の要な場合は, |
| + | $ git commit -m '最初のコミット' |
| + | $ git add 忘れてたファイル |
| + | $ git commit --amend |
| + | で,忘れてたファイルを再度commitする時,直近のcommitに上書きのような状態にする。 |
| + | |
| + | **普段の流れ [#hddb2a26] |
| gitを使った流れは,下記のような感じになる。 | | gitを使った流れは,下記のような感じになる。 |
| +ファイルを編集,新規作成 | | +ファイルを編集,新規作成 |
| 変更したものがない場合は,statusコマンドを使うと,このような出力が返ってくる。 | | 変更したものがない場合は,statusコマンドを使うと,このような出力が返ってくる。 |
| | | |
- | ***gitに登録させたくないファイル [#t4285e5b] | + | **gitに登録させたくないファイル [#t4285e5b] |
| gitに登録させたくない場合のファイル指定は,無視させるファイルを.gitignoreファイルに指定することが出来る。 | | gitに登録させたくない場合のファイル指定は,無視させるファイルを.gitignoreファイルに指定することが出来る。 |
| .gitignoreの内容を, | | .gitignoreの内容を, |
| のようにすると,file.txt~とかいうファイルを無視するようになる。 | | のようにすると,file.txt~とかいうファイルを無視するようになる。 |
| | | |
- | ***共有レポジトリの作成と運用 [#u8c9db25] | + | **gitに登録したファイルを削除 [#q1742fde] |
| + | 単にrmでファイルを削除した場合は,リポジトリには登録されたままになる。この場合, |
| + | $ git checkout -- filename |
| + | とかすると,削除したファイルを復活できます。リポジトリにファイルが残ってるからです。 |
| + | |
| + | gitリポジトリからファイルを削除する場合は, |
| + | $ git rm filename |
| + | を実行すると,ファイルの削除が登録される。次にコミットすると,ファイルが削除される。 |
| + | |
| + | *共有レポジトリの作成と運用 [#u8c9db25] |
| 複数の人で共有するリポジトリがあると便利。 | | 複数の人で共有するリポジトリがあると便利。 |
| $ mkdir /var/www/git/hogehoge.git | | $ mkdir /var/www/git/hogehoge.git |
| これで,共有リポジトリに登録できたんで,複数人で共同作業が行えるようになった。 | | これで,共有リポジトリに登録できたんで,複数人で共同作業が行えるようになった。 |
| | | |
| + | **共有リポジトリからコピーを持ってくる [#ke536912] |
| コピーを持ってくるには, | | コピーを持ってくるには, |
| $ git clone /var/www/git/hogehoge.git hogehoge.new | | $ git clone /var/www/git/hogehoge.git hogehoge.new |
| とかすればOK。~ | | とかすればOK。~ |
- | svn だとcheckoutに似ているんだけど,gitでは,リポジトリサーバーが保持しているデータを全てコピーする。つまり履歴も含んだ全てが,git cloneとすることで手元に持ってこれる。これは,リポジトリサーバーが万が一壊れちゃっても,どこかに残っているcloneしたデータを戻してやれば復元も可能になる。これまでの履歴ももちろん復元される。~ | + | svnだとcheckoutに似ているんだけど,gitでは,リポジトリサーバーが保持しているデータを全てコピーする。つまり履歴も含んだ全てが,git cloneとすることで手元に持ってこれる。これは,リポジトリサーバーが万が一壊れちゃっても,どこかに残っているcloneしたデータを戻してやれば復元も可能になる。これまでの履歴ももちろん復元される。~ |
| このへんが,Subversionとは違うところ。 | | このへんが,Subversionとは違うところ。 |
| | | |
| +git commitでリポジトリに変更を登録(git commit -a "説明・・・") | | +git commitでリポジトリに変更を登録(git commit -a "説明・・・") |
| +git pushで共有リポジトリを更新 | | +git pushで共有リポジトリを更新 |
- | $git push origin master | + | $ git push origin master |
| | | |
- | ***githubを使う [#vcd63cc6] | + | *githubを使う [#vcd63cc6] |
| 共有リポジトリは,別のコンピュータやネットワークの外のコンピュータでも同様に使用できる。~ | | 共有リポジトリは,別のコンピュータやネットワークの外のコンピュータでも同様に使用できる。~ |
| cloneやpushやpullといったコマンドは,ネットワークを経由して行われる。通信プロトコルは,いくつかを選択できるようになっている。~ | | cloneやpushやpullといったコマンドは,ネットワークを経由して行われる。通信プロトコルは,いくつかを選択できるようになっている。~ |
| githubというのは,共有リポジトリを作成して,それをWeb上で共有できるサービスの事をいうようだ。 | | githubというのは,共有リポジトリを作成して,それをWeb上で共有できるサービスの事をいうようだ。 |