LoginSignup
1
2

Gitの基礎をまとめてみた

Last updated at Posted at 2023-12-27

はじめに

初学者の私が備忘録としてGitの基礎コマンドについてまとめる。

GitHubが絡むものと、ローカルのGitのみでの動作のモノの差が
明示されていないサイトが多く、初学者としてはむずかしいなあと感じた。

ローカル操作編

GitHubのことは一旦置いといて、ローカル環境での操作のコマンドを記録していく。

ファイルを保存する関係のコマンド

git add

ファイルの中身をインデックスに追加する
ローカルのワークツリーからローカルのステージに記録
git commitの前段のようなイメージ

よく使うやつ
git add .

全ファイルを対象に記録する場合「.」忘れずに!!!!!!

git commit

追加・変更したファイルをGitに登録するためのコマンド
ローカルのステージからローカルのリポジトリに記録
git commitをする前にはgit addが必要

よく使うやつ
git commit -m "自由にメッセージ"

コミットする際に変更点をメモしておける。(例:会員機能を作ったよとか)

現状の確認に関するコマンド

まず初めに

  • ワークツリー
    現在作業中でaddもcommit行われていないモノ
  • ステージ
    addされて、commitがまだのモノ
  • リポジトリ
    addとcommitが済んでいる状態のモノ

git diff

リポジトリとワークツリーの差分をチェック
つまり、現在作業中のモノ(ワークツリー)とcommit済みのもの(リポジトリ)の差分を確認できる。

こんなこともできる
git diff --staged

リポジトリ(commit済み)とステージ(add済みcommit未だ)の差分をチェック
git diffと比較対象を「--staged」で変更されたコマンド。

git status

ワークツリーとステージの差分をチェック

なんか便利そう
git status -s

git statusは長いメッセージが出てくるが、それを省略して見やすくしてくれる。

git log

commitの履歴を確認することができる。

元に戻す系のコマンド

git restore ファイル名

addやcommitしたものに戻すコマンド

使い方①
git restore file.txt

ステージ(add済commit未)からワークツリーへ「file.txt」をコピーする(元に戻す)
使い方②
git restore --staged file.txt

リポジトリ(add済commit済)からステージ(add済commit未)へ「file.txt」をコピーする(元に戻す)

チーム開発編

ここからGitHubが出てくる

作業手順

  1. ローカルのメインブランチをGitHubのメインブランチと揃える
  2. 作業用ブランチを切って作業を行う
  3. ファイル修正・ローカル内でコミット
  4. GitHubへpush
  5. プルリクエストをする ※GitHub上での操作
  6. コードレビューをしてもらう ※GitHub上での操作
  7. マージをしてもらい、GitHubの内容を更新する ※GitHub上での操作

つまり、githubへpushしただけではGitHubは更新されていない!!

git branch ブランチ名

ブランチを作成するコマンド
ワークしているブランチはこれだけでは切り替わらないので注意!!!!
作業しているブランチを変えたい場合はgit switch ブランチ名が必要

git branch

ブランチ一覧を表示

豆知識
git branch -a

GitHub含めたすべてのブランチが確認できるみたい

git switch

ブランチを切り替える際に使用する。

使用例
git switch ブランチ名

ブランチ名のブランチへ移動する
こんなこともできる!便利!
git switch -c branch

ブランチを作成して移動する
ほな「git branch ブランチ名」はいらんわけや・・・。

git checkout ブランチ名

ブランチを切り替える際に使用する。

git switchとgit checkoutと何が違うん!?

  • git switchは移動するのみ
  • git checkoutは変更の取り消しも含まれる

つまり、git checkoutはgit switch+git restoreになるわけやな。

switchのほうが後から出てきた便利コマンドらしく、
これから学習する人はswitchで覚えたほうがわかりやすいっぽい。

確かにcheckoutって直感的にわかりにくい。

git merge 取り込みたいブランチ

現在のブランチに、他のブランチの更新を取り込む処理
ローカル内での話

使い方
git merge 取り込みたいブランチ

取り込みたいブランチを記述することがポイント
現在AブランチにいてBブランチの内容をコピーしたい場合は
git merge Bブランチとなる
githubからも持ってこれるらしい
git merge リモート名/取り込みたいブランチ

コンフリクト

同じ個所が変更されているものをmergeした場合に発生するエラー
正しい状態に書き直して再度mergeするとOK

GitHub周り

git push ※事前にGitHubとの連携が必要

ローカルでcommitしたものをGitHubに反映させる
※事前にGitHubとの連携が必要

使い方
git push リモート名 ブランチ名

git pull ※事前にGitHubとの連携が必要

githubのブランチをローカルのワークツリーへコピー
※事前にGitHubとの連携が必要

使い方
git pull リモート名 ブランチ名

git fetch ※事前にGitHubとの連携が必要

githubのブランチをローカルのリポジトリにコピー
※事前にGitHubとの連携が必要

git pullとは反映される場所が違うため注意!!!!
git fetchgit mergeを一発でできるようにしたのがgit pull

git fetchとgit pullは使い分けが便利らしい

git pullはコンフリクトが発生していたら修正が困難(らしい)
mainブランチ(自身が直接変更処理を加えないブランチ)へはgit pull
作業ブランチへはgit fetch→git mergeをした方がコンフリクトの解消がしやすい。

git clone ※事前にGitHubとの連携が必要

Github上からファイルを取り込む方法
なんかgit pullと似てんな・・・・。

git cloneとgit pullって何が違うん!?

多分見た目上は結構同じな気がする。しかし、やってることは結構違う。

  • git clone
    ファイルをすべてコピーする
  • git pull
    ローカルとリモートの差分をリモートからコピーする

おまけ編

git log

コミット履歴が見れる
コミットのIDとかも見れる。

git rebase

ブランチの状態を変更することができるコマンド
カレントブランチを他のブランチと直列回路につなぎ直せる。
並列回路⇒直列回路に切り替えるイメージ
チーム開発では混乱のもとになったりするので、そういうのがあるんだ程度でOK

git reset

コミットしたものに戻したい場合に使う
履歴を消してしまうので必要時は要検討すること

  • --soft
    コミットだけリセット。(Headの移動だけ)

  • --mixed
    コミットとアドもリセット(Headの移動に加えて、addした状態も取り消す)

  • --hard 最終手段なので全然使わない、リスクが大きい
    コミットとアドとワークツリーもリセット(最終手段!ってかんじ)
    --mixedに加えて、ワーキングツリーもすべて削除される

こんな使い方
git reset --soft [巻き戻したい時点のコミットを指定]
git reset --mixed [巻き戻したい時点のコミットを指定]
git reset --hard [巻き戻したい時点のコミットを指定]

git stash

ブランチの内容をcommitしたくないが、ブランチの移動をしたい際に使用したりする
一時別置きができる機能

git revert

git resetとは違い、消した履歴が残る。
というより、消すというわけではなくコミットを「Revert状態」にするというイメージ。
あれ?このコミットどうしたっけ・・・?というのがgit logから確認できる。
そして、再revertすることで元に戻せる!

git cherry-pick

他のブランチから内容をコピーしてくる手法。特定のファイルだけでもいけるっぽい。
あまり使わなそう・・・。存在だけここでは知っておく。

Git勉強するうえでよくわからなかった言葉

ハッシュ

commitに割り振られているIDのようなもの
git logで確認できるやつ

ハッシュ
$ git log 
commit 757cd618f38d574238bae4768ff1a1aedfafdb7a ☜
Author: DQNEO <dqneo@example.com>
Date:   Thu Feb 4 21:18:28 2016 +0900
second commit

上記例の757cd618f38d574238bae4768ff1a1aedfafdb7aがハッシュとかハッシュ値と呼ばれるやつ。

随時更新!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2