Gitとは | 分散型バージョン管理システム。元々Linuxカーネルのソースコードの「バージョン管理システム」で現在は多くのソースコードやWebサイトのコード、ドキュメント管理などに用いられている。ソースコードを管理する際、最新版だけを保存するやり方はうまくいきません。開発中のさまざまなタイミングで状態を管理し、必要に応じて比較、参照したり、元に戻したりできるようにする仕組みが「バージョン管理システム」です。Gitでは、テスト版など複数に枝分かれした状態も管理できます。複数のメンバーによる開発を前提としており、開発中の各時点におけるコメントや、コメントへの返信なども管理できるようになっています。 |
gitとは | 「Git」用のコマンドです。ほとんどの場合「サブコマンド」と組み合わせて利用します。 |
リポジトリ repository | とは、ソースコードや変更履歴、コメントなどを一括して保管する場所です。リポジトリには、自分のPC上に作るローカルリポジトリと、「GitHub」などのWebサービス上に作る「リモートリポジトリ」があり、両者を連携させることで複数の開発者による開発を1本にまとめることができます。 既存のリポジトリ(リモートリポジトリ)にあるソースコードなどを入手したい場合は、まず、「git clone」でリポジトリを自分の環境に複製します(※1)。リモートリポジトリの内容がバージョンアップされたら「git pull」コマンドで最新版を取得します(連載第382回)。開発に参加するのではなく、単に最新版を取得したいという場合は、「git clone」と「git pull」を利用すればよいでしょう。 |
コミット | ファイルやディレクトリの追加・変更をリポジトリに記録する操作。コミットを実行すると、リポジトリの内では、前回から現在の差分を記録したコミット(またはリビジョン)が作成されます。このコミットは時系列順につながった状態でリポジトリに格納されています。のコミットを最新の物から辿ることで、過去の変更履歴やその内容を知ることができる。
コミット実行時にはコミットメッセージの入力を求められます。コミットメッセージは必須。空のままで実行するとコミットが失敗。普通1行目 : コミットでの変更内容の要約、2行目 : 空行、3行目以降 : 変更した理由を書き入れる。 |
ワークツリー インデックス | Gitの管理下に置かれた作業ディレクトリをワークツリーと呼ぶ。リポジトリとワークツリーの間にはインデックスstagingが存在し,リポジトリにコミットする準備の場所。コミットでファイルの状態を記録するためには、まずインデックスstagingにファイルを登録する。インデックスを間に挟むことで、ワークツリー内の必要ないファイルを含めずにコミットを行ったり、ファイルの一部の変更だけをインデックス(staging)に登録してコミットすることができます。 |
初期設定 | Gitインストール後の一回だけ行う。.gitconfigに記録される。(1) git config --global user.name "taka kondo", (2)git config --global user.email "taka.kondo@kek.jp" (3) git config --global color.ui true (4) git config --global core.editor vi (<---Editorの指定) |
git configの現状 | git config --list --show-origin, git config -l(config内容のリスト), git config --help, git --version,, git config user.email,簡単なhelpは git add -hなどで。 |
lxplusでは | lsetup git |
(1) git init | git宣言:リポジトリ新規作成or初期化。git init --> Initialized empty Git repository in /afs/cern.ch/user/k/kondo/SCTcalib/git/myweb/.git/ |
(2) stagingに上げる | git add index.html, git add .(下位も含めて全部addするとき) |
(3) repositoryにput | git commit --> commit情報を出力<---topにmessage書き入れること。直接にはcommit -m "comment"でいい。 git commit -a -m "direct" staging飛ばして直接commitする。
git commit --amend(直前のcommitを取り消しすときはaddしてからcommitする) |
git log | 履歴をみる git log--> log出力, git log --oneline(1行で), git log -p(変更された場所をみる), git log --stat(何回変わったか?) |
git statusが便利 | status出力 次にやるべきことを教えてくれる。git status -s, git status --short(短いリスト) |
止める | git checkout -- <file>(変更を止める) |
git diff | 差分をみる. git diff(stagingに上げてない時)git diff --cached(stagingに上がったものの差分を見る) |
削除・移動 | git rm <file>, git mv <file> |
.gitignore | gitしない指定.gitignoreに*.logなどを書いておきadd, commitしておく。説明 |
戻る | git reset --hard HEAD(変更したけど直前のcommit直後に戻す) hardは作業dirとstaging両方を一気に HEADは直前のcommit, HEAD^はその一つ前のcommit。git reset --hard 178db0307af040835(178db0307af040835まで戻す)途中は全部消えるから注意。しかしORIG_HEADを使えばもとに戻れる。 |
git branch 分岐 | git branch(全branchリスト) git branch hoge(hogeを作成)git checkout hoge(hogeに移る)git checkout master(masterに戻る) |
git tag | tagを表示。git tag v1.0(直近のcommit)git tag v0.9 178db0307af04(直近でない時)git tag -d v0.9(tag消去) |
git show | git show v1.0でtag v1.0の内容が見える。 |
alias | git config --global alias.co checkout, git config --global alias.st status |
共有repository | 上homeでmkdir ourweb.gitをつくりourwebgit/git init --bare(ここではcommitなどはしないよと宣言してる)。元のmywebでgit remote add origin ../ourweb.gitで登録する。git push origin masterで共有repository(ourweb.git)にpushしている。 |
git clone (381) | リモートリポジトリを複製するには、クローン(Clone)という操作を行います。クローンを実行すると、リモートリポジトリの内容をまるまるダウンロードしてきて、別のマシンにローカルリポジトリとして作成できます。クローンしたローカルリポジトリは変更履歴も複製されているので、元々のリポジトリと全く同じように履歴の参照やコミットをすることができます。>Gitのリポジトリを複製。git clone ourweb.git/ myweb2で自動的にmyweb2が作られて内容もコピーされる。 |
git push | git push origin master(これ誰?)で共有repositoryにコピー |
git pull | myweb/でgit pull origin masterでourweb.gitにある内容がコピーupdateされる。 https://kamino.hatenablog.com/entry/cmake_tutorial1 https://github.com/kamino410/blog_cmake_tutorial/tree/master/step2 |