Gitの基本コマンドの使い方について

2021年3月26日Git

gitの基本コマンドについてまとめました。

目次から読む

gitの基本コマンド

ステージに追加する git add

git add フォルダ名
git add -A
git add .

のコマンドを実行すると、ステージングエリアに追加することができます。
ステージングエリアというのは、コミットされる前の場所のようなもので、コミットの前の段階をプリセットすることができます。
実際には、このステージングエリアでコミットするファイルを選択します。

すべてのファイルへのtrackingがアクティブになります。
-Aはall filesのことです。

git add .

でも同じ意味になります。
個別のファイルを指定したい場合は、たとえば、

git add index.html

とすればOKです。
VS codeではAという文字が表示されます。activeのAです。
ファイルを修正すると、Mという文字が表示されます。 modifiedのMです。

現在変更状況を確認する git status

git status

現在のワークツリーのファイルと前回のステージのスナップショットとの差の変更、現在のステージと前回のリポジトリ内にあるスナップショットの差の変更の両方を確認することができます。

VS codeではUという文字が表示されます。untracked filesのUです。

変更差分を確認する git diff

git diff ファイル名

とすると、ファイルの変更とステージとの差分を確認できます。diffはdifference(差分)の略です。
ステージに上げたあと、最新のコミットとの差を確認する場合、

git diff HEAD

とすると、前回コミットからの差分を確認できます。

ステージングエリアとHEADとの差分

git diff --staged

変更履歴を確認する git log

編集して、コミットした後にリセットしたくなったとします。
まずは

git log

で履歴を確認できます。

そしてcommit の後にidが表示されます。
戻りたいcommitのidをコピーします。

git log --oneline

とすると一行で表示されます。

git log -p index.js

とすると、指定したファイルの変更した差分を表示することができます。

git log -n 4

とすると、変更履歴の最新の4つまでが表示されます。

git log --oneline -n 5

と組み合わせることもでき、一行で変更履歴の最新の5つまでが表示されます。

そして、quitのqと入力して解除します。(ctrl Cではなくqです。)
反応しない場合は:qと入力します。

ファイルの削除を記録する git rm

ファイルをエディターから削除しただけでは、Gitの管理から外すことができません。

git rm ファイル名

とすると、コミットしたファイルをGitの管理から削除することができます。

git rm -r ディレクトリ名

とすると、コミットしたディレクトリも合わせてGitの管理から削除することができます。

リポジトリのデータだけ消してワークツリーには残したい場合、次のようにします。

git rm --cashed ファイル名

そして、.gitignoreにそのファイル名を追記しておきます。

ファイルの移動を記録する git mv

git mv 旧ファイル 新ファイル

これは下の3コマンドと同じ意味です。

mv 旧ファイル 新ファイル
git rm 旧ファイル
git add新ファイル

コミットする git commit

git commit -m 'メッセージ'

のようにメッセージをつけて実行すると、コミットできます。
-mはmessageのmです。メッセージ部分ののInitial commit部分は自由に設定することができます。
どの作業を何のために変更したのか、バージョン管理のためにすぐに振り返られるようにメッセージを残します。
-vでGitのエディターを立ち上げることができます。また、どのような変更をしたのかを確認することもできます。
コミットやステージに追加する前にどのファイルが変更されたか確認する癖をつけておきましょう。変更途中のファイルを追加してしまうことを防ぐためです。変更が完了したものだけを追加しましょう。

わかりやすいコミットメッセージの特徴
ほかのメンバーに「なにをなぜ変更したのか」がわかるメッセージをつけることです。
1行目:変更内容のようやく
2行目:空行
3行目:変更理由

git commit -v

とすると、何を変更したのかを確認することができます。gi
そして、1行目などに追記することができます。

リモートリポジトリに追加する git remote add

ローカルリポジトリからリモートリポジトリにプッシュします。
プッシュするには、まずはリモートリポジトリの場所を知る必要があります。
リモートリポジトリというのは、GitHubのことだと思ってください。

GitHubにてリポジトリを作成します。
GitHubでリポジトリを作成したら、
…or push an existing repository from the command line
という項目の次のものをコピーします。

git remote add origin https://github.com/....git

originという変数にGitHubのurlを格納して、今後アップしたり取得したりできるようになります。gitではメインのリモートリポジトリにoriginという名前をつけます。
このコマンドをターミナルで実行します。

そうすると、originというブランチをきることができます。そのとなりのhttps://github.com/….gitというURLがリモートブランチのURLとなります。これでローカルデポジトリが、リモートデポジトリの場所にアクセスできるようになります。
これで、コードをリモートブランチにpushすることができます。
originという部分は名前なので、自由に変更することができますが、originがスタンダードな名前です。

プッシュする git push origin master

ローカルリポジトリの内容をリモートリポジトリに送ることをpushといいます。他の人に共有したいとき、GitHubに残しておきたいという場合に使います。

git push origin master

とするとローカルリポジトリの内容をリモートリポジトリへ送信することができます。つまり、GitHubへ送ることができます。
上のコマンドは、originというリモートリポジトリをmasterというブランチへ送信するという意味です。

git push origin new-feature

とブランチ名を記入すると、ブランチをリモートリポジトリへ送信することができます。

git push -u origin master

-uをつけることで次回以降git push でmasterブランチからorigin リモートリポジトリへ送信することができるようになります。

変更を元に戻すやり方

ワークツリーのファイルを元の状態に戻す git checkout

git checkout --ファイル名
git checkout --ディレクトリ名

全ての変更取り消す git checkout –.

git checkout --.

–は、ブランチ名とファイル名が同じときにgitが正しく動作するようにするためです。
これは、ステージ情報をワークツリーに上書きすることで変更を取り消しています。

ステージに追加した変更を元に戻す git reset HEAD

git reset HEAD ファイル名
git reset HEAD ディレクトリ名

全ての変更を取り消す

git reset HEAD .

指定した変更はステージから取り消されます。ただし、ワークツリーのファイルには影響しません。HEADは最新のコミット意味します。
git reset HEADコマンドは、ローカルリポジトリの最新ファイルをステージに上書きすることで取り消ししています。ワークツリーのファイルも取り消したい場合は、上git reset HEADコマンドの後でgit checkout コマンドを使います。

直前のコミットを修正する(push前) git commit –amend

コミット自体を修正したい場合や、コミットのメッセージを修正したい場合(push前)

git commit --amend

今のステージの内容で上書きすることで修正します。–amendを使っていいのは、リモートリポジトリにpushする前のときだけです。

直前のコミットを修正する(push後) git commit

リモートリポジトリにpushしたコミットはやり直してはいけません。なぜなら他の人がリモートリポジトリからデータを取り込んでいた場合、その人のデータはリモートリポジトリの状態と異なるものになってしまいます。その結果、他の人がリモートリポジトリに保存しようとするときに、リポジトリが異なるというエラーがでます。
すでにpushしているコミットを修正したい場合は、git commit–amendコマンドではなく、git commitコマンドでもう一度新しいコミットを作成して、その内容を修正します。

コミットする前に、前のコミットの段階に戻す git reset –hard HEAD

編集した後、コミットする前にリセットしたくなったとします。
その場合、

git reset --hard HEAD

でリセットできます。前のコミットの段階に戻る一番簡単な方法です。

コミットした後にリセットしたくなったとき git reset –hard id名

変更履歴を確認した後、

git reset --hard id名

とするとリセットできます。

ただし、このように履歴を戻るのはマスターブランチに影響を与える危険があります。そのため、ブランチをきります。
ブランチをきることで、マスターブランチに影響を与えることなく変更することができます。

リモート情報を確認する git remote

リモートリポジトリ名を表示するコマンド

git remote 

リモートリポジトリを複数持っていても全て表示されます。

対応するurlを表示する git remote -v

git remote -v

設定しているリモートリポジトリの情報を表示します。

リモートリポジトリを追加する git remote add

リモートリポジトリ複数登録することが可能です。
チーム開発用、個人開発用などとわけることができます。

git remote add リモート名 リモートurl 

リモート名というショートカットでurlをリモートリポジトリとして登録するというコマンドです。

リモートリポジトリから取得する方法はフェッチとプルの2つあります。

リモートリポジトリから取得する(フェッチ) git fetch

git fetch リモート名
git fetch origin 

リモートリポジトリからローカルリポジトリにデータ持ってくることができます。

remotes/リモート名/ブランチ

というローカルリポジトリの中のリモートリポジトリ専用の場所に保管されます。ワークツリーには反映されません。
ワークツリーに反映させるには

git merge origin/master

というコマンドを使います。originリポジトリのmasterブランチの内容を統合するという意味になります。

またブランチを確認するには

git branch -a

とします。

また

git checkout remotes/origin/master

などとすると、remotes/origin/masterへワークツリーの内容を切り替えることができます。

リモートリポジトリから取得してマージする(プル) git pull

プルは、リモートリポジトリから情報をフェッチして、ワークツリーへマージの両方を行うコマンドです。

git pull リモート名 ブランチ名
git pull origin master

またこちらは

git pull 

と省略可能です。これは下記コマンドと同じです。

git fetch origin master
git merge origin/master

フェッチとプルを使い分け

基本はフェッチを使いましょう。
プルは楽ですが、統合したくないファイルに統合してしまう可能性があります。
たとえば自分がmasterブランチにいて何も変更していないようなら、プルを使うなど、慣れるまではフェッチを基本として、徐々にプルを使っていきましょう。

リモートリポジトリの情報を詳しく確認する方法 git remote show

git remote show リモート名
git remote show origin

git remote コマンドより詳しいじょうほうえを得ることができます。表示される内容は、

  • フェッチとプッシュのurl
  • リモートブランチ
  • git pull の挙動
  • git push の挙動

を確認することができます。

リモート名を変更する git remote rename

git remote rename 旧リモート名 新リモート名
git remote rename feature features

リモートが不要になり削除する git remote rm

git remote rm リモート名

gitのコマンド一覧

gitのコマンドは、GitHubのまとめたチートシートがとてもわかりやすいです。
https://training.github.com/downloads/ja/github-git-cheat-sheet.pdf

READMEの作成

touch README.mdでREADMEを作成します。

  1. ファイル作る(touch README.md)
  2. git add -A
  3. git commit -m 'Added …’
  4. git push origin master

この4ステップでファイル作成からgitHubへのpushが完了します。

実業務での一般的な流れは逆の流れとなります。
まずは、GitHubでリポジトリを作成そのときに

Add a README file
Add .gitignore

にチェックしてリポジトリを作成します。
そしてURLをコピーして、pullすることで、ローカルリポジトリとつなげます。

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

こちらの記事がわかりやすいです。
https://qiita.com/shim0mura/items/85aa7fc762112189bd73

全ブランチをリモートリポジトリからpullする

こちらの記事がわかりやすいです。
https://qiita.com/muraikenta/items/e590a380191971f9c4c3

Git

Posted by devsakaso