Git基本コマンド

2019/11/20

Gitの基本コマンドをまとめてみました。

 
INDEX

 

1.設定


「~/.gitconfig」に書き込まれます。


# ユーザー名登録
$ git config --global user.name "hoge"

# メールアドレス登録
$ git config --global user.email "hoge@hogehoge.com"

 

設定ファイルについて
ファイル 対象 確認コマンド
/etc/gitconfig 全ユーザ git config --system -l
~/.gitconfig 特定ユーザ git config --global -l
~/.git/config 特定リポジトリ git config --local -l

 

2.ローカルリポジトリの作成


# リポジトリを作成
# .gitディレクトリが作成される
# .gitディレクトリを削除すればgit管理を辞めることができる
$ git init

# 現在あるファイルを追加
$ git add --all

# コミット
$ git commit -m "initial commit"

 

3.リモートリポジトリからプロジェクトをコピー


# コマンドプロンプト/ターミナルを使ってローカルリポジトリに移動
$ cd [ローカルリポジトリのパス]

$ git clone [リモートリポジトリパス]
$ git clone https://github.com/jquery/jquery.git //実例

 

4.ファイル更新までの基本手順


# ファイルを追加
$ git add [ファイル名]
$ git add index.html //実例
$ git add *.html //すべてのhtmlファイル
$ git add --all //変更されたファイル全部

# ファイルをコミット
$ git commit -m "任意のコメント"
$ git commit -m "fix for #1" //実例
$ git commit -a -m "fix for #2" //-aオプションは変更を自動検出 

# masterを更新
$ git push origin master

 

5.ブランチの操作


# ブランチの作成
$ git branch [branch_name]
$ git branch staging //実例

# ブランチの移動
$ git checkout [branch_name]
$ git checkout staging //実例

# ブランチの削除
$ git branch -d [branch_name]

# 現在のブランチ名の変更
$ git branch -m [branch_name]

# ローカルブランチの一覧
$ git branch

# リモートとローカルのブランチの一覧
$ git branch -a

# リモートブランチの一覧
$ git branch -r

# リモートブランチへチェックアウト
$ git checkout -b branch_name origin/branch_name

 

6.編集をマージ


# ブランチに移動
$ git chekout [branch_name]

# 変更ファイルをコミット
$ git commit -a -m "コメント"

# masterに移動
$ git checkout master

# 差分をマージ
$ git merge [branch_name]

# ファイルの更新
$git push origin master

 

7.マージを取り消す(コンフリクトが発生して戻したい)


$ git merge --abort

 

8.addの取り消し


# 直前のaddの取り消し
$ git reset HEAD

# ファイル名指定
$ git reset HEAD [file_name]

 

9.スタッシュ(変更を一時的に避難)


# スタッシュの実行
# saveは省略することも可
$ git stash save

# スタッシュのリストを表示
$ git stash list

# スタッシュのリスト + 変更内容確認
# 終了は"q"
$ git stash -p

# 変更したファイル一覧を確認
$ git stash show 
$ git stash show stash@{0} // 実例

# 避難させていたファイルの復活
$ git stash apply 
$ git stash apply stash@{0} // 実例

# 削除
$ git stash drop <消したいstash名>
$ git stash drop stash@{0} // 実例

# 復活 + 削除
$ git stash pop stash@{0}

 

10.リセット(コミットの取り消し)


# インデックスを現在のHEADの状態にする
# HEADとは今自分が作業している場所を示すポインタ
$ git reset [commit id]

# インデックスからファイルをアンステージする
$ git reset HEAD [filename]

# ワークツリーを含めたすべてをコミットIDの状態に戻す
$ git reset --hard [commit id]

# HEAD^ 直前のコミットをなかった事にする
# --hard コミットを取り消した上でワークディレクトリの内容も書き換える
$ git reset --hard HEARD^

# --soft ワークディレクトリの内容はそのままでコミットだけ取り消し
$ git reset --soft HEAD^

# 指定したハッシュ値のコミットまで戻す
$ git reset --hard {ハッシュ値}
$ git reset --hard 3dc88f8 // 実例

# 直前のリセットを取り消す
# ただしコミットしたデータだけ
$ git reset --hard ORIG_HEAD

git reset --hardは、手元にある作業ツリーとインデックスの変更内容は、すべて消えてなくなります。一般的に git では「コミットされていない変更」は、一度失うと帰ってきません。作業ツリーとインデックスを別の場所に避難しておきたかったらスタッシュなどがあります。

 

11.コンフリクトの解消

手動で解決する場合


# コンフリクトを解消しファイルを保存後、以下のコマンドを実行
$ git add {file_name}

$ git commit {file_name} -m "コミットメッセージ"

 

自動で解決する場合


# 現在のブランチを正とする
$ git checkout --ours {file_name}

# マージで指定したブランチを正とする
$ git chekout --theirs {file_name}

# 現在のブランチを正とする+全部
$ git checkout --ours .

# マージで指定したブランチを正とする+全部
$ git checkout --theirs .

 

12.git pullで、ローカルを強制上書きする


# リモートの最新を取ってくる
$ git fetch origin master

# ローカルのmasterを、リモート追跡のmasterに強制的に合わせる
$ git reset --hard origin/master

git reset --hardは、手元にある作業ツリーとインデックスの変更内容は、すべて消えてなくなります。一般的に git では「コミットされていない変更」は、一度失うと帰ってきません。作業ツリーとインデックスを別の場所に避難しておきたかったらスタッシュなどがあります。

 
また、いろいろ発見したら随時追加していきます。

とりあえず、以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-環境構築