とらりもんHOME  Index  Search  Changes  Login

とらりもん - git Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

[[http://linux.keicode.com/prog/git.php]]

!大事な概念・用語
* work tree: 保存・更新・管理の対象とするディレクトリのこと。例: ~/hogehoge/
* index: 「git addコマンド」によって, work treeから反映される中間状態。
* repository: 「git commit」コマンドによって, indexから反映される状態。例: ~/hogehoge/.git/
* commitする: indexからリポジトリへ反映すること。
* revision: ある時点でのリポジトリの状態。commitともいう。
つまり, こういう図式:
[work tree] --(git add)--> [index] --(git commit)--> [repository]
* branch: repositoryの中の枝分かれ。「git branchコマンド」で作ったり消したり。branchどうしの移動は「git checkout」コマンド。

* tag



!GitHubにリポジトリを作る
hogehoge.gitというリポジトリをGitHub上で作る。その後、ローカルで,
$ git remote add origin https://github.com/24dakenlo/hogehohe.git
↑このかわりに,
$ git remote add origin https://****@github.com/24dakenlo/hogehohe.git
のように, URLにログイン名****を埋め込むと, あとでいちいちログイン名を聞かれなくて済む。

!GitHubのリポジトリから持ってくる(コピーというかクローン)
$ git clone https://github.com/24dakenlo/sunshade.git
これをhttps:でなくgit:でやると, 認証必要なサイトでは鍵交換が必要。httpsなら単にパスワード入力。

!GitHubとのやりとり
git push origin hogehoge # 現在のブランチをネットを介してサーバー(githubなど)に載せる。
その後, githubのブラウザでpull requestする。そのときにブランチを消せる。
githubのブラウザでmerge。その結果, githubのmasterブランチに変更が反映される。
git pull # ネットを介してサーバー(githubなど)のmasterをこちらに反映。

!ローカルリポジトリを作る
対象ファイルのあるディレクトリ(それをワークツリーという)で,
$ git init
すると, そのディレクトリに.gitというディレクトリができる。それがローカルリポジトリ。

$ git config --global user.name "Kenlo Nasahara"
$ git config --global user.email "****@*****"
* ここでREADME.mdを作っておくこと。mdはマークダウンの略。[[http://codechord.com/2012/01/readme-markdown/]]

!ワークツリーの状態をインデックスに反映
$ git add file1 file2     ... file1とfile2をインデックスに反映。
$ git add -u    ... ワークツリー内の全内容をインデックスに反映。
$ git status     ... インデックスの状態を表示。

!インデックスから削除(管理対象から除外)
$ git rm --cached filename

!インデックスの状態をリポジトリに反映(コミット)
$ git commit -a      ... インデックスの状態をリポジトリに反映。
→ この後, メッセージ入力が求められる。

または,
$ git commit -m "minor change!"
↑メッセージをコマンドラインに含めてしまう。

!GitHubにpush
$ git push origin master

!もろもろ
git diff  # ワークツリーとリポジトリの差分
git diff --cached  # インデックスとリポジトリの差分
git diff HEAD   # ワークツリーとリポジトリの差分

git checkout HEAD .  # ワークツリーとインデックスを最近のリポジトリと同じ状態に戻す。
git checkout オブジェクト名 .   # ワークツリーとインデックスを過去のリポジトリと同じ状態に戻す。

git branch hogehoge # ブランチの新規作成
git branch # 存在するブランチをすべて表示
git checkout hogehoge # 現在のブランチを切り替え
git checkout master; git merge hogehoge
git branch -d hogehoge # ブランチの削除

git revert オブジェクト名  # コミットを取り消す

git log ... 変更履歴の表示
$ git log
commit 916a3b27dd3257bd6c2d9e4db5f7eb785582b929
Author: Kenlo Nishida Nasahara <****@gmail.com>
Date:   Sat Jun 17 14:27:10 2017 +0900
↑この916a3b27dd3257bd6c2d9e4db5f7eb785582b929みたいな部分をそのコミットの「オブジェクト名」という。

git branch ... ブランチを一覧表示
git branch hogehoge  ... hogehogeという名前のブランチを新規に作成。
git checkout hogehoge  ... hogehogeというブランチに切り替える。
git chechout master; git merge hogehoge   ... hogehogeというブランチの内容をmasterブランチに反映。
git branch -d hogehoge   ... hogehogeというブランチを削除。

git clone ~/hogehoge  ... ~/hogehogeというワークツリー及びそのリポジトリをカレントディレクトリにコピー。

!最新のリポジトリの状態までワークツリーを戻す。
$git checkout HEAD .

!古いファイルを引っ張りだす
$ git show HEAD :abcd.c
$ git checkout HEAD :abcd.c