【Git】宿題「頻出のGitコマンド」をまとめる【day59】

Git

プログラミング独学day59の学習で、得たことや気づきを教えて!

今日は

・【Git】宿題「頻出のGitコマンド」

をアウトプットします!

 

 

 

こんにちは。プログラミングでweb制作ができるようになりたいharuです。

2歳0歳の育児をしながら、22時〜1時に独学しています!

→プログラミング学習day59、もりけん塾day14

 

わかったことや、気付きをログに残します。

同じく初学者の人が、これをみてインプットや復習ができるように書いていきます。

 

【Git】宿題「頻出のGitコマンド」をまとめる

昨日、#もりけん塾 でGitHub勉強会がおこなわれました!

 

途中参加になってしまったのですが、おそらく前半?で触れたであろうGitのコマンドについて宿題をいただいていました。GitHubの基礎知識を忘れないうちに、宿題のコマンドもまとめようと思います。

 

git commit -m “hogehoge”

(→昨日のブログにあります。)

意味:
「commitするときに、”hogehoge”というメッセージを添えます。」

解説:
commitメッセージと呼ばれ、変更の内容をわかりやすく記入します。

ちなみにProgateでは、”Change subtitle color”と例文が出てきたはずです。

ここで書いたメッセージは、GitHub上にpushしたファイルやディレクトリの隣に表示されます。

わたしが昨日入力した “add p”が表示されています。

git add .

(→昨日のブログにあります。)

意味
「既存のファイルをindexする」

解説

pushまでの以下の流れで、commitの準備をするための場所がindexでした。

自分のワークスペース→index→ローカルリポジトリにcommit→リモートリポジトリにpush

 

・すでにpushしたことのある既存のファイルをindexする場合は、

git add.

 

・新規のファイルがある場合は、

git add --all

を使います。

 

git status

意味
「ローカル環境でおこなった、ファイルの変更内容を確認する」

解説
昨日のブログにまとまっています→こちら

 

*今日は、追加で便利なオプションがあったのでアウトプットします。

・結果を簡単に表示する

git status -s

→結果は以下のように,シンプルに表示されてわかりやすい。

M sample.txt

頭文字は、以下のような意味。

  • M:変更
  • A:追加
  • D:削除
  • R:ファイル名の変更

以下記事、参考になりました。

 

git log –oneline

意味
「commit一覧を、一行で簡潔に表示させる」

解説
コミットIDとコミットメッセージのみ表示。

*実際にやってみた。以下ターミナル画面。

→昨日、今日と2回のcommitがあったのがわかります。簡潔でわかりやすいです。きちんとpull requestができているかも確認可能ですね。

 

・ちなみに、

git log

だけだと、

  • コミットID
  • 作者の名前(Author)
  • メールアドレス
  • コミット日時(Date)
  • コミットメッセージ

これだけの情報が、新着順に表示されます(;´д`)
初心者だと情報読み取るの大変です。

 

git push origin head

(昨日のブログにあります→こちら

意味
「一番新しいcommitをpushする」

 

git pull origin master

意味
「originリポジトリからデータを取得→master branchに合体する」

解説
このように書きます。

git pull [リポジトリ] [ブランチ]

 

・理解が曖昧なので、pullについて深掘りをしてみます。

こちらの記事が最高にわかりやすかったので、見れば一髪なんですが…

簡単にまとめると、

pull とは、fetch & merge をすること

です。fetchでリモート→ローカルに変更履歴を取り込み、mergeで自分のbranchに合体させます。

別の共同開発者がいる場合は、その人がリモートに上げた内容をpullすることで、自分のbranchを更新することができるんですね!

 

git branch -D [branch name]

意味
「選択したローカルのbranchを削除する」

解説
-D 大文字の場合は、どんなbranchでも削除が可能。

-d 小文字の場合は、merge済のbranchのみ可能。下記のどちらでも書き方OK

git branch --delete [ブランチ名] 
git branch -d [ブランチ名]

 

git stash と git stash apply

(→昨日のブログで一部紹介

意味
「git stash : commitせずに、変更内容をいったん避ける
git stash apply : 避けていた直近の内容をbranchに戻す」

解説
以下の草を生やす過程で、

自分のワークスペース→index→ローカルリポジトリにcommit→リモートリポジトリにpush→pull request、merge→ ローカルリポジトリにpull

pushし終えてから、pullするまでの間にローカルでファイルの変更をおこなってしまった場合は、pullができません(エラーになる)。なぜなら、リモートとローカルのファイルに差分が生まれてしまうからです。

そこで、「一度ファイルの変更内容をよけて→pull→ファイルの変更内容を戻す」という作業が必要になります。

 

・避けていた「直近ではない」履歴を戻したい場合は?

git stash list
git stash apply stash@{number}

listを呼び出して、呼び出したい履歴のnumberをstash@{number}に入力。

 

さらに詳しくは、こちら

 

git reset –soft HEAD^

意味
「最新のcommit変更を取り消す→一つ前のcommitがHEADになる」

解説
一番直近のcommitの実行を取り消して、まだcommitしていない状態に戻す。
commitのやり直しができるってことですね。

これはHEADのみを動かすものですが、indexも更新するなどの別オプションもある。

 

git checkout –

(→昨日のブログに書いてます)

意味:「branchの移動をおこなう」

解説

・branchを移動+新しいbranchを作成(昨日やったやつ)

git checkout -b [new branch name]

オプション -bを使うことで、新しいbranchを作成して、そこに移動できる

 

git push –force-with-lease origin head

意味:

「PUSHの際、ローカルrefとリモートrefを比較しローカルが最新か確認。
最新でなければ、PUSHは失敗するというもの。
※ただし、直前にfetchしているとPUSHが成功してしまうので注意

引用:https://qiita.com/wMETAw/items/5f47dcc7cf57af8e449f

解説

上記時によると、–force-with-leaseをつけてpushをすることで、ローカルとリモートが最新かどうかを確認してからpushしてくれる。

–force のみをつけた場合、強制pushができる。そのときに、リモートリポジトリでのcommitを破壊する恐れがあるのでつける。

 

git branch -m

意味
「ローカル上のbranch名を変更する」

解説

git branch -m <ブランチ名> <新しいブランチ名>

 

git branch

branchについては昨日のブログで詳しく書いたので省略します..

 

git rebase

意味:
「branch(A)とbranch(B)をmergeさせるとき、履歴を1本につなぎ直す。」

解説:

git rebase [つなぐ元にするブランチ名]

言葉だとわかりにくいので、図を拝借しました。

(引用:https://www.sejuku.net/blog/71919

これで更新ログが見やすくなるようです。

 

git  commit –amend

意味
「直前のcommitを修正する」

解説

・例)ファイルをもう一つ追加したかったのに忘れた

git add file.txt
git commit --amend

gitにaddしてからcommit –amendすることで、直前のcommitにファイルを追加することができる。(commit IDは変更される)

 

・commitメッセージの修正

git commit --amend -m "新しいメッセージ"

 

git clone [url] 

詳しくは昨日のブログをご覧ください

GitHubの新規リポジトリを、ローカルに取り込むことができる。
URLはGitHubのリポジトリURLのこと。

あとがき

Gitにはたくさんのコマンドがある…
Progateとか一部の一部の一部って感じです。
宿題に出していただいたということは、よく使うコマンドということ。
これは感謝すぎますね…しっかり覚えます。
アナログだけど、昨日と今日のブログを印刷しようw
インプットはしたので、ブログ見ながら使って慣れていきたい。
今日は以上です。

 

Thanks:師匠「もりけんさん」(@terrace_tec)

もりけんさんのHPはこちら