用語整理
- ワーキングツリー:実際に作業中のファイルたち
- ローカルレポジトリ: ローカルのレポジトリ
- ステージング:コミット準備がととのった状態にあるファイルたち
- リモートレポジトリ: リモートにあるレポジトリ(みんなで使うことが多いから共有レポジトリって呼んだりもする!)
1. 表示系
コミット履歴とかを表示する系のやーつ
コミット履歴表示
変更したファイルを表示
過去の特定のファイルの変更内容を見る
commitメッセージからキーワードで検索
あのファイルのあの行誰が更新したのか確認
2.git commit
コミットする際につかうやーつ
とりあえず状況確認
どのファイルがステージングにあがっていてーとか、どのファイルが追加になったやつでーとかがみれる。
修正前と修正後の差分を見る
コミットする前にどのファイルが更新されたか確認できる。
1 2
| git diff git diff {path}
|
ステージングにあげる
1 2
| git add . git add {ファイル名}
|
ステージングにあげたやつをとりけす(アンステージング)
1 2
| git reset HEAD git reset HEAD
|
部分的にステージングにあげる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Blog { private $title;
function __construct() { } + + public function set_title($title) { + $this->title = $title; + } + - public function get_title() { - return $this->title; - } } Stage this hunk [y,n,q,a,d,/,K,g,s,e,?]?
|
ハンク(ある程度に区切られた変更範囲)ごとに対話形式でどう対処するか選べる
y: ハンクをまるごとステージングへ
n: ハンクをステージングへあげない
e: 編集モード(vi)で部分的にステージングへあげる
- ‘-‘の行をaddしたくなければ、’-‘を’ ‘(空白)にする。
- ‘+’の行をaddしたくなければ、’+’の行を消す。
- 先頭に#と書かれている行はaddされない
ステージングにあがっているファイルの差分を見る
ステージングにあがっていないファイルの差分を見る
ファイル名変更
1
| git mv -f js/app.js js/App.js
|
3.過去改竄系。。。
一個前のコミットをなかったことに
HEADだけ一個前に戻す
ステージング・ワーキングツリーは維持される。
HEAD・ステージングだけ一個前に戻す
ワーキングツリーは維持される。
一個前のコミットでアンステージングされた状態。
HEAD・ステージング・ワーキングツリーを一個前に戻す
一個前のコミットでまっさらな状態になる。
一個前のcommitを編集
例1) ファイルを追加しわすれた
1 2
| git add aaa.txt git commit
|
例2) ファイルを間違って追加してしまった
1 2
| git rm aaa.txt git commit
|
二個以上前のcommitを編集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
pick <コミット1のhash> test_1.htmlファイルを修正 pick <コミット2のhash> test_2.htmlファイルを修正 pick <コミット3のhash> test_3.htmlファイルを修正
pick <コミット1のhash> test_1.htmlファイルを修正 edit <コミット2のhash> test_2.htmlファイルを修正 pick <コミット3のhash> test_3.htmlファイルを修正
git add test_2.html git commit --amend git rebase --continue
|
一番最初のコミットをrebaseする←普通にやるとできないの以下の方法で!
4.stash
変更中に他のブランチへの追加・変更をしたいときに一旦退避するやーつ
一時退避!
一時退避してるリスト
リスト
1 2 3
| <stash名1>: WIP on <stashを行ったブランチ名>: <ハッシュ> <コミットコメント> <stash名2>: WIP on <stashを行ったブランチ名>: <ハッシュ> <コミットコメント> <stash名3>: WIP on <stashを行ったブランチ名>: <ハッシュ> <コミットコメント>
|
復活
削除
復活しつつ削除
5. branch
ブランチのやーつ
ブランチ作成
ブランチ一覧表示
リスト
ブランチをきりかえる(チェックアウト)
ブランチを作成しつつチェックアウト
ブランチ削除
ブランチを結合(マージ)
1 2
| git checkout {マージさせたいブランチ名} git merge --no-ff {マージしたいブランチ名}
|
ローカルブランチとリモートブランチの関連づけ
git pull origin masterってやらなくてもgit pullだけでよくなる
1
| git branch --set-upstream develop origin/develop
|
6. remote操作
リモートのレポジトリのやーつ
リモートリポジトリ表示
リモートリポジトリをチェックアウト
コメント「-b」はローカルにリモートブランチのデータをおとしつつ、ローカルブランチの切り替えも行ってくれる。
1 2 3
| git checkout -b {ローカルブランチ名} {リモートブランチ名}
# 例: git checkout -b develop origin/develop
|
リモートリポジトリをローカルから削除
1 2 3 4
| git remote remove {名前}
$ git remote remove origin
|
リモートリポジトリを変更
1
| git remote set-url origin {リモートブランチレポジトリ}
|
アーカイブ
変更された差分ファイルを抽出するのに便利そう
とりあえず全ファイルをzipでアーカイブ
1
| git archive --format=zip HEAD -o archive.zip
|
あるコミットからの差分をzipでアーカイブ
1 2
| git diff --name-only HEAD HEAD~3 | xargs tar czf ./ver_diff.tar.gz
|
1 2
| git diff --name-only コミットA コミットB | xargs tar czf ./ver_diff.tar.gz
|
運用編
リモートブランチとローカルブランチ※1を同期
※1. リモートブランチを参照してるローカルブランチ
リモートブランチとローカルブランチの差分を表示
1 2 3 4
| git diff --name-status リモートブランチ
git diff リモートブランチ
|
リモートブランチとローカルブランチをマージ