LoginSignup
5
8

More than 1 year has passed since last update.

Gitの使い方 - 初心者向け(入門)

Last updated at Posted at 2020-06-22

はじめに

本記事の背景

今回、社内開発の案件がGITで管理されており、開発メンバに使い方と情報共有するため、GITに関しての記事を書こうと思っています。GIT使い始めるのは2年前ぐらいです。自分も初級者なので、該当記事はチーム開発の初級者向けとなります。上級者は勝手に飛ばしてよい(笑~~~)

内容と目標

本記事の内容はGIT基本コマンドの使い方、及びチーム開発の時よく使うGITコマンドを紹介します。目標としては、GITワークフローの全体イメージを理解し、日常の開発運用に対して、GITコマンドでソース管理できるようになるまで。

Gitの概要

「Git」とは?

作業フロー全体像

まず一番シンプルな作業フローイメージを見てみましょう。
GIT.png

  • 共有リポジトリ(shared repository)
    共有リポジトリはリモートリポジトリとも呼び、開発チームで共有するリポジトリとなります。
    一般的にメインバージョンのソースが格納されている。
    開発者は共有リポジトリからソースを「pull/fetch」コマンドで取り込む。

  • ローカルリポジトリ(local repository)
    ローカルで作業内容を一時的に保存するため、ローカルマシン上にあるリポジトリです。pushにより共有リポジトリに変更内容を反映する。

  • インデックス(index)
    インデックスとは、ローカルリポジトリにコミットの準備をするための場所です。インデックスの内容は、コミットによりローカルリポジトリへ反映されます。

  • 作業ツリー(working tree)
    ユーザーが作業中のフォルダやファイルのことです。作業ツリーの変更点はgit addによりインデックスに追加されます。

Gitコマンドについて

  • 基本操作のコマンド

    • 環境設定
    # ユーザ名設定
    $ git config --global user.name "hayashi.hirohumi"
    
    • リポジトリ作成
    # カレントディレクトリをGitリポジトリとして初期化する。
    $ git init
    
    # リモートリポジトリをローカルにクローン(複製)する。
    $ git clone https://github.com/ryanhoward19830311/gittest.git
    
    • ファイル管理
    # ファイルをインデックスに登録する。(バージョン管理対象になる)
    $ git add <pathspec>
    
    # ファイル名変更、移動
    $ git mv <source> <destination>
    
    # ファイルをバージョン管理から除外する。
    $ git rm <pathspec>
    
    • ステータスと差分の確認
    # 現時点作業ツリー内の状態を確認する。
    $ git status
    
    # コミットや作業ツリーとの差分を表示する。
    $ git diff
    
    # コミットの差分、ファイルの内容を表示する。
    $ git show <commit>
    
    • コミット
    # インデックスに変更内容を登録する。
    $ git add <file>
    
    # インデックスの内容をローカルリポジトリにコミットする。
    $ git commit
    
    • 取り消し
    # ファイルの変更やコミットをリセットする。(※git addの取り消しも使える)
    $ git reset [--mixed | --hard | --soft] [<commit>][<file>]
    
    # コミットの内容を取り消す。
    $ git revert [--no-edit] [-n] <commit>...
    
  • 共有リポジトリ(リモート)でのチーム作業のコマンド

    • 変更を公開する
    # ローカルの変更を共有リポジトリに反映する。
    $ git push
    
    • 共有リポジトリの変更を取り込む
    # 共有リポジトリの変更を取得して、作業ツリーに取り組む。
    $ git pull
    
    # 共有リポジトリの変更を取得する。(取り込みはしない。変更を確認してから手動で取り込むことが多い。)
    $ git fetch
    
    • 変更をマージする
    # 他のブランチの変更をチェックアウトしているブランチにマージする。
    $ git merge <branch_name>
    
    # 競合がある場合、競合を手動で解決して、再度コミット
    $ git add <conflict_file>
    $ git commit
    
    • 変更をリベースする
    # 他のブランチの変更をチェックアウトしているブランチにマージする。
    $ git rebase <branch_name>
    # 競合がある場合、競合を手動で解決して続行
    $ git rebase --continue
    
    • 特定のコミットをブランチに取り込む
    # 他のブランチの変更をチェックアウトしているブランチにマージする。
    $ git cherry-pick <commit_id>...
    
  • その他

    • ブランチ作成
    $ git checkout -b <new_branch_name>
    
    • ブランチ・タグの切り替え
    $ git checkout <branch_name>
    
    • リビジョンにタグ付け
    $ git tag v1.0
    
    • 履歴
    $ git log
    
    # 前の5件概要のみ表示する。
    $ git log -5 --oneline
    
    • 一時保存
    # 現在編集中のファイルを一時保存
    $ git stash
    
    # 一時保存したリストを確認する。
    $ git stash list
    
    # 一時保存した内容を確認する。
    $ git stash show <stash_id> [---name-only]
    
    # 一時保存した内容を取り出す。
    $ git stash pop
    

終わりに

 今回Gitの概要をざっくり説明しましたが、各コマンドについての詳細は次回の記事に公開します。

各コマンドの詳細

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8