gitまとめ

参考:git--local-branching-on-the-cheap

  • gitとは?

    • ソースコードのバージョン管理のためのソフトウェア。
    • コマンドでソースコードの状態を以前の状態に戻したり、同じソースコードを異なるバージョンとして管理することができる。
    • リモートレポジトリへgit管理下のソースコードをpushすることでそれを他の人と共有することもできる。
  • リモートレポジトリとは?

    • クラウド上にあるソースコードを管理するための領域
    • ローカルのgitと同期して管理することができる。
    • ソースコードがおいてあるのでローカルの状態と関係なくpullすればそのソースコードをローカルで再現することができる。この仕組みを利用してチームでの開発をスムーズに行うことができる。リモートレポジトリを経由してソースコードの改変を他者と共有することができる。また、gitのブランチ機能を利用して開発を並行して行うこともできる。
  • pullとは?

    • pullとはoriginからソースコードを引っ張ってきてローカルレポジトリのソースコードと差異がある場合にその差分をローカルレポジトリに反映させること。
    • pullはローカルリポジトリのワーキングツリーやステージにファイルのある状態では実行することができない。
    • gitにはワーキングツリー・インデックス・HEADの三つの領域がある。
    • git pull origin ブランチ名
  • ワーキングツリーとは?

    • 人間が直接触って編集することのできる領域。
    • ここでファイルを編集して動きを確認することができる。
    • gitではファイルの集まりのことをツリーと表現する。ツリーとはデータの構造のことではない。
  • ステージとは?

    • HEADに移行する前段階のこと。
    • インデックスとも呼ばれる。
    • git add
    • addされるとインデックスの状態が変化する。
  • HEADとは?

    • HEADとは最新のコミット状態を指し示すポインタのようなものである。
    • ステージからgit commit することでHEADを変更することができる。
    • HEADのソースコードはpushすることでリモートレポジトリに反映させることができる。
  • スタッシュとは

    • 前述ようにステージやワーキングツリーにファイルがあるとgit pullすることができない。
    • git checkout して他のブランチでの作業を行うと現在のワーキングツリーの情報が失われてしまう。
    • 作業途中の状態でcommitしたくない。
    • 上記のような時にスタッシュを行うことで作業中のファイルやステージのファイルを隠して取っておくことができる。
  • ブランチとは?

    • git管理下の領域のファイルに並行して別の変化を加え、そのバージョン管理を行うための仕組み。
    • 異なるブランチ同士は同じ名前でもとは同じ一つのファイルであっても、別のファイルであるかのように扱うことができる。
    • リモートリポジトリでもそれぞれ対応するブランチを作成し、それぞれが同期するように扱うことができる。
    • 枝分かれさせて開発しているブランチはそのブランチでの開発が完了した時に別のブランチにマージして、終了することができる。
    • pushやpullもブランチ単位で行う。
    • pullした時にコンフリクトが起こることがある。
  • コンフリクトとは?

    • pullしたリモートのブランチのHEADがローカルのHEADの同一箇所で異なる状態であること。
  • pushとは?

    • ワーキングツリーのソースコードはまずaddすることでステージに移行できる。
    • ステージにあるファイルはcommitすることでローカルレポジトリに移行することができる。
    • commitされローカルリポジトリに移行したファイルはその時点の状態がgitのバージョン管理の対象となる。
  • gitのバージョン管理とは?

    • 最新のバージョンのことをHEADと呼ぶ。
    • HEAD以前のバージョンにはハッシュ値が付与されている。
    • git resetやrevertで過去の状態に戻すことができる。
  • resetとは?

    • git reset soft

      • HEADの位置を指定の位置まで戻す。
    • git rese mixed

      • HEADの位置とステージの状態を指定の位置まで戻す。
    • git reset hard

      • HEADの位置とステージの状態とワーキングツリーの状態(変更)を指定の位置まで戻す。
      • hardを使う時には注意が必要。
      • 他のオプションと異なり、ワーキングツリーの状態まで変化するためやり直しがきかない。
    • resetの対象のファイルの指定

      • ファイルを指定する場合にはHEADの位置の変更はできない。(reset hardはできない)
      • インデックスのファイルをHEADの状態に戻したりすることができる。
    • 戻る位置の指定方法

      • 最新のコミット

        • HEAD
        • 現在のHEADの位置
      • 一つ前のHEADの位置

        • HEAD^
        • HEAD~
      • 二つ以上前のHEADの位置

        • HEAD^^
        • HEAD~~
        • HEAD~2