Gitの基本コマンドまとめ

Git

自分用にGitの基本コマンドまとめました。

 

前回の記事でクローンした場所(~/sample)に移動します。

$ cd ~/sample

現在のいるブランチを確認

$ git branch
* master

*が付いている場所に現在います。

チェックアウト

ブランチを作成して、作成できているかを確認します。
その後チェックアウトします。

// 作成
$ git branch feature/init

// 確認
$ git branch
 feature/init
* master

// ブランチが増えました。

// チェックアウト
$ git checkout feature/init
Switched to branch 'feature/init'

// 確認
$ git branch
* feature/init
  master

// ブランチが移動しているのがわかります。git status

ファイルを追加・修正する

sample/ディレクトリ配下に、いくつかファイルを作成してみます。
また、.gitignoreを少し変更しました。

変更した状態をみる

$ git status
On branch feature/init
Changes not staged for commit:
    (use "git add ..." to update what will be committed)
    (use "git checkout -- ..." to discard changes in working directory)

        modified:   .gitignore

Untracked files:
    (use "git add ..." to include in what will be committed)

        gulpfile.js
        package-lock.json
        package.json
        src/

no changes added to commit (use "git add" and/or "git commit -a")
  • modified: 修正したファイル
  • Untracked files: 新規作成したファイル

変更点をみる

の部分が追加されたところです。
今回は追加しかしていないので、+しか表示しれていませんが、変更したり、削除した行があれば、-と表示されます。

$ git diff
diff --git a/.gitignore b/.gitignore
index 159f515..2f52cfc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@
    *.css.map
    *.sass.map
    *.scss.map
+/node_modules/
+.DS_Store

一括でステージにあげる

コミットする前に、コミットしたいファイルをまとめて、ステージングします。

$ git add .

// ステージングされているか確認する
$ git status
On branch feature/init
Changes to be committed:
  (use "git reset HEAD ..." to unstage)

        modified:   .gitignore
        new file:   gulpfile.js
        new file:   package-lock.json
        new file:   package.json
        new file:   src/scss/style.scss

Changes to be committed:の下に、緑色でファイルが表示されていたらOK。

ファイルひとつずつaddする場合は、

$ git add .gitignore

ディレクトリごとaddする場合は、

$ git add src/

ステージから下げる

一括で下げる時は、

$ git reset

ファイルひとつずつ下げる場合は、

$ git resest .gitignore

ディレクトリごと下げる場合は、

$ git resest src/
コミット

メッセージを二行入れてコミットしてみます。

$ git commit -m "init: gulp, base source codes" -m "gulpの環境と土台のソース準備"

コミットを戻す

直前のコミットを取り消す時は、HEAD^をつける。

コミットといインデックスを戻して、ファイルの変更は残す時。
オプションをつけない時は、これが適用される。

$ git reset --mixed HEAD^

コミットだけを戻して、インデックス、ファイルの変更は残す時。

$ git reset --soft HEAD^

コミット、インデックス、ファイルの変更を戻す時。
--hardはかなり強力なので、極力使わないようにしています。

$ git reset --hard HEAD^

今回は、ソフトを使ってみます。

$ git reset --soft HEAD^
$ git status
On branch feature/init
Changes to be committed:
    (use "git reset HEAD ..." to unstage)

        modified:   .gitignore
        new file:   gulpfile.js
        new file:   package-lock.json
        new file:   package.json
        new file:   src/scss/style.scss

ログを見る

再度コメント付きでコミットし、確認してみます。

$ git log
commit xxxxxxxx (HEAD -> feature/init)
Author: [名前] 
Date:   Mon Dec 21 16:13:41 2019 +0900

    init: gulp, base source codes
    
    gulpの環境と土台のソース準備。

リモートへプッシュする

$ git push origin feature/init
Enumerating objects: 34, done.
Counting objects: 100% (34/34), done.
Delta compression using up to 8 threads
Compressing objects: 100% (26/26), done.
Writing objects: 100% (32/32), 65.34 KiB | 4.36 MiB/s, done.
Total 32 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
remote: 
remote: Create a pull request for 'feature/init' on GitHub by visiting:
remote:      https://github.com/sample/sample/pull/new/feature/init
remote: 
To github.com.sub:sample/sample.git

Githubを開いて確認すると、ちゃんとプッシュされています。

マージする

ローカルマージする時は、コマンドで。

// マスターブランチに戻る
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

// 今いるブランチに指定したブランチをマージします。
// masterにfeature/initをマージ
$ git merge feature/init
Updating xxxxxxx
Fast-forward
 .gitignore                            |    2 +
 gulpfile.js                           |   72 ++
 package-lock.json                     | 7070 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 package.json                          |   26 +
 src/scss/style.scss                   |    3 +
 24 files changed, 7369 insertions(+)
 create mode 100644 gulpfile.js
 create mode 100644 package-lock.json
 create mode 100644 package.json
 create mode 100644 src/scss/style.scss
 
// ローカルでマージしたものをリモートにプッシュする
$ git push origin master

ブランチを確認する

// ローカルのブランチを確認する
$ git branch
  feature/init
* master

// リモートのブランチを確認する
$ git branch --remote
  origin/HEAD -> origin/master
  origin/feature/init
  origin/master

// ローカルリモートまとめて確認する
$ git branch --all
  feature/init
* master
  remotes/origin/HEAD -> origin/master
  origin/feature/init
  remotes/origin/master

ブランチを削除する

ローカルブランチを削除する
--deleteオプションは、HEADにマージしてあればを削除
-Dオプションは、マージしなくても強制的に削除

// 削除
$ git branch --delete feature/init
Deleted branch feature/init (was xxxxx).

リモートのブランチを削除する

// 削除
$ git push --delete origin feature/init
To github.com.sub:sample/sample.git
 - [deleted]         feature/init

参考サイト

git を初めて使う時 コミット→プッシュ→マージ の流れ - Qiita
gitを使って開発する基本の流れ ポイント:gitは怖くない コミット、プッシュ、マージができれば作業可能 IDEやGUIのツールからも使えますが覚えるまではまずはコマンドラインでやった方が理解しやすい ブランチは最初はm...
Git | 一括で add する - Qiita
ドットを使う。 $ git add . これで カレントディレクトリ以下の全変更をステージング出来る。 環境 git version 2.3.8 (Apple Git-58) チャットメンバー募集 何か質問、悩み事、相談など...
Gitのコミットメッセージの書き方 - Qiita
Gitのコミットメッセージの書き方 自分なりにまとめてみました。Git歴浅いので、意見募集中です。 (2014年12月17日追記) 想像以上にたくさんの方にストックなりはてブなりいただいたので、はてブでなるほど!と思ったコメン...
git resetでどのオプション(hard, mixed, soft)を指定すべきか、シチュエーション別に分けてみる - Qiita
git reset、理屈はわかるんだけど、じゃあどういうときにどのオプションを使うんだっけ、というのは結構な頻度で調べたりする。 めんどくさいので軽くまとめる。適宜増やしたい。 (git resetオプションの基本的なことは、以下の...
Git で不要になったローカルブランチ・リモートブランチを削除する方法 - Qiita
ローカルブランチ ブランチの一覧を見る ローカルブランチの一覧を表示する % git branch master foo bar 削除 HEAD にマージしたブランチを削除する % git branch ...

コメント