humangas's blog

自分の振り返りを適当に書いてます。書きっぷりはそん時の気分によって変わります。

ドットインストール:git入門 (全22回)まとめ

ドットインストール:git入門(全22回) より

gitって何?

バージョン管理システム

バージョン管理の流れ

ファイルを作ったり、修正したり、ある程度のまとまりになったら、履歴データベースに保存する。

  1. 作業ディレクトリ
  2. ステージングエリア(インデックス)→ ある程度まとまったら、まとまりをコミットする
    • ※ 作業経過をステージングエリアに保存しておくことが出来る
  3. リポジトリ(ローカル、リモート)

必須設定

まずは、名前とe-mailを設定(※最後のcolorはおまけ)

$ git config --global user.name "Test Tarou"
$ git config --global user.email "xxxxx@gmail.com"
$ git conifg --global color.ui true

設定確認

$ git config -l

設定のHELP

$ git config --help

始め方

  1. 作業ディレクトリを作成(好きな場所)
  2. 初期化(gitで始めるよ):$ git init
  3. ステージングエリアにファイルを追加:$ git add [ファイル]
  4. コミット:$ git commit(変更管理エディタが起動するので、変更点を記載する)
  5. コミットログを参照:$ git log

gitログ参照方法

ログの中身は?

commit ユニークな英数字(管理用のkey) ってなってる。

コミットメッセージをコンパクトに見たい

管理用のkeyの数桁とメッセージのみ

$ git log --oneline

変更内容を具体的に見たい

コミット情報+変更(前とのdiff)結果

$ gti log -p

変更数とかだけをコンパクトに見たい

変更数サマリ

$ git log --stat

現在状態把握

今どういう状況なの?

編集内容は?:ステージにあるのかとか、変更されたのかとか。。。

$ git status

ファイルをチェックアウトする

$ git checkout -- index.html

変更内容差分の確認

ステージングエリアに上げる前

$ git diff

ステージングエリアに上げた後

$ git diff --cached

ファイル操作

今のディレクトリにあるファイル全てをaddしろ

.カレントを指定→ ステージングエリアにUP

$ git add .

削除、移動はOSコマンドではなくgitのコマンドを使う

→ git管理下で操作しないと、トレース出来なくなるため

$ git mv [ファイル名]
$ git rm [ファイル名]

バージョン管理下から無視する

無視ファイルを作って、そこにフィルタ条件を記載する(ログとか、別に管理する必要がないファイル) 置いた場所と、そこからの階層全てに対して有効。 なので、サブディレクトリだけのファイルを無視する。何て使い方もできる。

$ vim .gitignore *.log

直前のコミットをマージする

コミット単位をやっぱまとめたいとかいう場合→無駄なコミットログが増えなくて良い。

$ git commit --amend

一行コミットログを入れるぐらいの場合

こうすると、コミットエディタは起動しない

$ git commit -m "[コミット内容]"

過去バージョンに戻る

以下操作は、 $ git log コマンドと合わせて使うと分かりやすい

直前のコミット断面に戻る

$ git reset --hard HEAD

直前のコミット断面の一つ前に戻る

$ git reset --hard HEAD^

コミットkey(ID)を指定してそこに戻る

$ git reset --hard [key(最低、頭7桁でいい→適当でOK)]

タグを指定してそこに戻る

$ git reset --hard [タグ名]

前回取り消された情報が一個だけ入っていて、ソコに戻る

resetしたけど、やっぱ戻りたいみたいな場合

$ git reset --hard ORIG_HEAD

ブランチ

分岐、枝分かれ→別々のバージョン管理をしたい場合に使う

ブランチの参照

master だけ最初はある(現在のやつには、*(アスタリスクが付く))

$ git branch

ブランチの作成

$ git branch [ブランチ名]

ブランチの切替

$ git checkout [ブランチ名]

ブランチのマージ

$ git merge [マージ元ブランチ名]

ブランチの削除

$ git branche -d hoge

ブランチ作成&チェックアウト

ブランチを作成 → チェックアウト(切替)まで一発でやるコマンド

$ git chekout -b [ブランチ名]

コンフリクト(衝突)の解消

例えば、各ブランチで同じファイルの同じところを、両方で修正しちゃった→衝突→回避しないとコミットできない。 * コンフリクト部を直接編集してコミットし直せば良いだけ。以下みたいになっているので、>>>>>とかを削除して、保存するだけ。

[ブランチ名]

・・・内容・・・

・・・内容・・・・ <<<<<<[ブランチ名]

タグ

commit ID(key)に対して、分かりやすい別名をつけることが出来る(タグ)

タグをつける(直近のコミットに対して)

$ git tag [タグ名]

タグの一覧

$ git tag

タグ付けされたコミットの中身を参照する

$ git show [タグ名]

タグを付け直す

$ git tag [付け直したいタグ名] [対象となるコミットのcommit key]

タグを削除する

$ git tag -d [タグ名]

エイリアス

別名をgitコマンドに付けられる

エイリアスを付与する

$ git config --global alias.[エイリアス名] [エイリアスを付けたいコマンド名]

例) git checkout → git co というエイリアスを付ける場合

$ git config --global alias.co checkout

エイリアスを確認する

$ git config -l
alias.[エイリアス名]=コマンド名

初めての共同作業

必要なもの

  • 共有リポジトリ
  • [リポジトリ名].git という名称にする(リポジトリ名には、[.git]を付けるのが通例)

共有リポジトリ初期化

--bare → 共有だよ。ということで、管理ファイルだけ管理される。ここではコミットとかしない。という感じで初期化できる。

$ git init --bare

共有リポジトリとして公開するリポジトリを作成

$ git remote add [名前なんでもいい→よく使う名前:origin] [リモートリポジトリパス]

共有リポジトリを削除

$ git remote remove [付けた名前]

共有リポジトリをローカルに取得

リモートから手元に取得

$ git clone [[リモートリポジトリ].git] [新しいリポジトリ名]

共有リポジトリへローカルでコミットした内容をpushする

$ git push [共有リポジトリ名] [ブランチ名]

共有リポジトリの最新のコミット内容を自分とこに持ってきてマージしてくれる

$ git pull [共有リポジトリ名] [ブランチ名]

共有リポジトリのコンフリクト

push時に、コンフリクトしたら、一旦pullしてから、再度pushする。 ただ、同じファイルだった場合、前述のコンフリクト解消をして、pushして上げればいい。