コマンドで操作するgit - 開発手順に沿って解説



# 開発手順に沿って解説するgitコマンド操作


## 通常の開発手順

#### ローカルの作業ディレクトリに移動する

    $ cd ［作業ディレクトリパス］

#### リモートリポジトリをローカルにクローンする

    $ git clone ［リポジトリパス］

#### ディレクトリ内の状態を調べる

    $ ls

#### ローカルにリポジトリディレクトリが作られていることが確認できる

    ［リポジトリディレクトリ］

#### リポジトリディレクトリに移動する

    $ cd ［リポジトリディレクトリ名］

#### 全ブランチを一覧表示して確認する

    $ git branch -a

#### 「develop」がローカルカレントブランチになっていることを確認する

    * develop
      master
      remotes/origin/develop
      remotes/origin/master

#### 上記のようになっていない場合「develop」をローカルカレントブランチにする

    $ git checkout develop

#### ローカルカレントブランチ「develop」から開発ブランチ「feature/［featureブランチ名］」を作成する

    $ git checkout -b feature/［featureブランチ名］

#### ブランチが作成されたメッセージを確認する

    Switched to a new branch 'feature/［featureブランチ名］'

#### 再度ブランチを一覧表示して確認する

    $ git branch -a

#### 開発ブランチ「feature/［featureブランチ名］」がカレントになっていることが確認できる

      develop
    * feature/［featureブランチ名］
      master
      remotes/origin/develop
      remotes/origin/master

#### 開発する

↓

#### 開発ブランチの差分を確認する

    $ git status

#### 変更した部分と追加したファイルが過不足なく表示されることを確認する

    On branch feature/［featureブランチ名］
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
    	modified:   ［変更したファイル／ディレクトリ］
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
    	［追加したファイル／ディレクトリ］

#### 追加・変更したファイルをcommit候補に加える

    $ git add *

#### または追加・変更したファイルの一部をcommit候補に加える

    $ git add ［候補に加えたいファイル／ディレクトリ］

#### 開発ブランチの状態を再度確認する

    $ git status

#### add処理した追加・変更ファイルがcommitリストにて確認できる

    On branch feature/［featureブランチ名］
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
    	modified:   ［追加したファイル］
    	modified:   ［追加したファイル］
    	modified:   ［追加したファイル］
    	new file:   ［変更したファイル］
    	new file:   ［変更したファイル］

#### 追加・変更したファイルをcommitメッセージ付きでcommitする

    $ git commit -m "［commitメッセージ］"

#### リモート「feature/［featureブランチ名］」ブランチにpushする

    $ git push origin feature/［featureブランチ名］

#### pushされたメッセージを確認する

    Total 0 (delta 0), reused 0 (delta 0)
    To ［リポジトリパス］
     * [new branch]      feature/［featureブランチ名］ -> feature/［featureブランチ名］

#### ローカルブランチを削除する

    $ git branch -d feature/［featureブランチ名］




## ローカルからリポジトリを立ち上げる

※ ネットワーク設定やアカウントの権限により実行できないことがある

#### ローカルの作業ディレクトリに移動する

    $ cd /［作業ディレクトリ］

#### リポジトリディレクトリを作成する

    $ mkdir ［リポジトリディレクトリ名］

#### ディレクトリ内の状態を調べる

    $ ls

#### ローカルにリポジトリディレクトリが作られていることが確認できる

    ［リポジトリディレクトリ］

#### リポジトリディレクトリに移動する

    $ cd ［リポジトリディレクトリ名］

#### リポジトリディレクトリをgit管理ディレクトリに設定する

    $ git init

#### git init成功メッセージが表示される

    Initialized empty Git repository in ［ローカル.gitパス］

#### リモートリポジトリを追加する

    $ git remote add origin ［リポジトリパス］

#### ファイルを追加する

#### 追加したファイルをcommit候補に加える

    $ git add *

#### 追加・変更したファイルをcommitメッセージ付きでcommitする

    $ git commit -m "［commitメッセージ］"

#### リモート「master」ブランチにpushする

    $ git push origin master





# 取り消すコマンド

## addを取り消す

#### 直近の1件のaddを取り消す

    $ git reset HEAD




## 直近の1件のcommit・pushを取り消す

※共同開発ブランチでは原則として利用しないこと

#### 直近のcommitの変更点を確認する

    $ git diff HEAD~1

#### 差分を確認し取り消して問題ないことを確認する

    diff --git a［変更されたファイル］ b［変更されたファイル］
    index 0f8c565..9a1e747 100755
    --- a［変更されたファイル］
    +++ b［変更されたファイル］
    @@ -2,7 +2,7 @@
    -    ［変更前のコード］
    +    ［変更後のコード］

#### 直近のcommitを取り消す

    $ git reset --soft HEAD^

#### 取り消した状態のままforce pushする

    $ git push origin feature/［featureブランチ名］ -f

#### pushメッセージでpush成功を確認する

    Total 0 (delta 0), reused 0 (delta 0)
    To ［リポジトリパス］
     + 8559c29...8647645 feature/［featureブランチ名］ -> feature/［featureブランチ名］ (forced update)

#### 取り消しが成功したかどうかローカルカレントブランチの状態を確認する

    $ git status

#### commit前の状態に戻っていることが確認できる

    On branch feature/git_command
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
    	modified:   ［変更したファイル／ディレクトリ］




## 直近の複数件のcommit・pushを取り消す

※共同開発ブランチでは原則として利用しないこと

#### commit履歴を確認する

    $ git log

#### commit履歴を確認できる

    commit a34e43548f821f24f213535e9ab300af991a6704
    Author: ［Author ID］
    Date:   Thu Sep 10 15:48:30 2015 +0900
    
        ［commitメッセージ］
    
    commit 864764514e0ffd09bbd85e0734d9aa17dc509f9d
    Author: ［Author ID］
    Date:   Thu Sep 10 15:15:01 2015 +0900
    
        ［commitメッセージ］
    
    commit 6da92864059a8287888f2abbe6740544927eb2ac
    Author: ［Author ID］
    Date:   Thu Sep 10 11:39:21 2015 +0900
    
        ［commitメッセージ］
    ・
    ・
    ・

#### 直近の3件分を取り消し（4件前の状態になる）た場合の影響範囲を確認する

    $ git diff HEAD~3

#### 直近3件のcommitを取り消す（4件前の状態になる）

    $ git reset --soft HEAD~3

#### 取り消した状態のままforce pushする

    $ git push origin feature/［featureブランチ名］ -f

#### 取り消しが成功したかどうかローカルカレントブランチの状態を確認する

    $ git status

#### この状態でcommit・pushすると、3件存在していたcommitを1件にまとめることができる

    $ git commit -m "［commitメッセージ］"
    $ git push origin feature/［featureブランチ名］





# 取り込むコマンド

## 他のブランチのバージョンを取り込む

#### 「develop」ブランチをpull --rebaseする

    $ git pull --rebase origin develop