0
0

Gitコマンドと開発フロー【未完成】

Last updated at Posted at 2024-05-29

記事のタイトル

目次

個人開発時のフロー

移動・削除・変更・短縮

チーム開発時のフロー

ブランチの最初に戻りやり直す

■個人開発時のフロー


git init

効果:リポジトリを初期化し追跡下に置かれ、バージョン管理が可能になる。
メモ:開発の時は最初にこのコマンドを入力する

コマンド
git init

git add

効果:ファイル変更をステージングエリアに上げる。

コマンド
# 特定のファイル
git add <ファイル名>

# 全ファイル
git add .

git diff

効果:現在の作業ディレクトリとステージングエリアとの間の差分を表示。
メモ:既存のファイルに対する変更点(追加、削除、修正)のみを表示。新規ファイルは含まない。

コマンド
# 作業ディレクトリ ~ git addの差分
git diff

# git add ~ git commit後の差分
git diff HEAD

# git add ~ git commit前の差分
git diff --staged

git commit

効果:選択したファイルを記録

コマンド
# 別エディタで記録
git commit

# 直接入力 ※使用頻度多い
git commit -m "Initial commit"

# コミットする際に変更内容を表示
git commit -v

git log

コミット履歴表示

コマンド
# コミット履歴を表示※他メンバー含む
git log

# 1行表示
git log --oneline

# グラフィカルに表示
git log --graph

# 変更内容も表示
git log -p

# 入力した数だけ表示
git log -n <数>

# 1行表示 + 入力した数だけ表示 ⇨ シェルコマンドでエイリアス登録用
git l <数>
# 上記コマンドのエイリアス設定
git config --global alias.l '!bash -c "git log --oneline -n $1"'

# 

!の意味
コマンドの先頭に付けると外部コマンドとして実行できる

-cの意味
連続コマンド入力

$1の意味
https://atmarkit.itmedia.co.jp/ait/articles/1810/07/news001.html

git status

現在の変更内容確認

コマンド
git status

git rimote

リモートリポジトリの設定を管理

コマンド
# リモートの一覧表示
git remote

# リモートの詳細URL表示
git remote -v

# リモートリポジトリ登録・追加
git remote add <リモートリポジトリ名> <リモートリポジトリのURL> 

git push

リモートリポジトリにファイルをアップロード
メモ:GitHubで自動生成され、以後は「git p」でプッシュ可能になる

コマンド
git push <リポジトリ名> main



■移動・削除・変更・短縮


git mv

留意点:名称変更した場合はgit commitする必要がある
git rmとgit addを同時に行うことになるため

コマンド
# ファイル名orディレクトリ名変更
git mv <変更前> <変更後>

# ファイル移動
git mv <移動したいファイル> <移動先ディレクトリ>

git rm

# ファイル削除
git rm <ファイル名>

# ディレクリ削除
git rm <ディレクリ名>

# ディレクリと中の全てのファイルを削除
git rm -r <ディレクトリ名>

#ファイルをgitの追跡から解除をしてローカルに残したい場合
git rm --cached <ファイル名>

#ディレクトリと中の全てのファイルをgitの追跡から解除をしてローカルに残したい場合
git rm --cached -r <ディレクトリ名>

git reset (addステージングを取り消し)

コミットが 1以上 ➡ ステージに追加した変更を元に戻す (git addをキャンセル)

コマンド
# ファイル
git reset HEAD <ファイル名>

# ディレクトリ
git reset HEAD <ディレクトリ名>

# 全て
git reset HEAD .

git commit -amend (直前のコミットを取り消し)

注意点:既にリモートでプッシュしたコミットは取り消ししない
他の開発者の履歴に影響を与えるため共有リポジトリでは特に注意が必要。
基本プッシュしたら使用しない事。

コマンド
# ファイル
git commit --amend

Gitコマンドエイリアス(短縮)

コマンド
# コマンドエイリアス登録
git config --global alias.短縮コマンド 元コマンド

# クオテーションで囲む方法
# 例)ログを1行で表示
git config --global alias.lg "log --oneline"
# 例)コミットを直接入力
git config --global alias.cm "commit -m"

# 登録された全てのコマンドエイリアスを表示
git config --global --get-regexp alias

# エイリアスを削除する
git config --global --unset alias.削除したいコマンド

--globalは Git のグローバル設定に適用されます。
※エイリアスを設定する際には git を含める必要はありません。
たとえば、git status の操作を短縮して s としたい場合の入力例⇩
git config --global alias.s status


■チーム開発時のフロー


git clone

リモートリポジトリからローカルリポジトリにプロジェクトを複製。
他の人がすでに作成しているプロジェクトから始める場合に使用。

コマンド
git clone <リポジトリのURL>

git fetch

リモートリポジトリからローカルリポジトリのブランチに情報を落とす
ローカルリポジトリに情報を落とすだけでワークツリーには反映しない

コマンド
git fetch <リモート名>

git merge

コマンド
# 変更を取り込む側のブランチに切り替える
git checkout master  # masterブランチに切り替え

# 他のブランチから統合
git merge feature-branch  # feature-branchの内容をmasterブランチにマージする

両方のブランチを統合して、新しく「マージコミット」を作成する

git pull

リモートリポジトリからファイルをダウンロードする。
git fetchgit mergeを同時に行っている

コマンド
git pull origin master

【手順①】git pull で他メンバーが作成したファイルをダウンロード
【手順②】ファイルの中身変更
【手順③】git add でステージング
【手順④】git push でプッシュ

git branch

アスタリスク (*) が付いているブランチは、現在チェックアウトして作業しているブランチ。コミットや変更がそのブランチに適用されます。

コマンド
# 新しいブランチ作成
git branch <ブランチ名>

# 現在のリポジトリ内のブランチを一覧表示
git branch

# ブランチの全情報を表示
git branch -a

git checkout

主に二つの目的で使用されます

  1. ブランチの切り替え
  2. 変更の取り消し
コマンド
# ブランチの切り替え
git checkout <切り替えたいブランチ名>

# 変更が取り消され、最後にコミットされた状態に戻ります
git checkout -- <ファイル名>

# ディレクトリごと
git checkout -- <ディレクトリ名>

# 全取り消し
git checkout -- .
# [--]をつける理由は、ブランチ変更と区別するため


# ブランチの作成とチェックアウトを同時に行う
git checkout -b <ブランチ名>

■変更の取り消し

①この状態でコミットする
screenshot_35.png

②コミット後に再度編集※git checkoutの数を増やす
screenshot_34.png

git checkout -- <ファイル名>を入力し最新のコミット時に戻す

screenshot_36.png

ブランチの最初に戻りやり直す

コマンド
# 全取り消し
git checkout .
# 未追跡ファイルを一括削除
git clean -fd

# 「01_feature」という1つ前のブランチに戻る
git checkout 01_feature

# 「02_feature」という現在作業していたブランチを削除する
git branch -D 02_feature

# やり直したい「02_feature」ブランチを作り直しチェックアウト
git checkout -b 02_feature

コミットを指定し作業環境を完全に戻す
コマンド
# 1つ前のコミットにリセット
git reset --hard HEAD~
####### or ######
# 2つ前のコミットにリセット
git reset --hard HEAD~2

# 未追跡ファイルを一括削除
git clean -fd

 注意)使用は控える

未追跡ファイルの削除
-f は強制的にファイルを削除するオプションです。
-d はディレクトリも含めて削除します。
-x は.gitignoreで無視されているファイルも含めてすべて削除します。

コマンド
git clean -fdx

開発やり直しのために未追跡ファイルを削除鶴つもりが
元から格納されていたアセットファイルまで削除されたので
使わないようにする。
先に記述したgit clean -fd はいいが -xは使わないようにする。
gitignoreファイルまで削除される


未追跡ファイルの削除の確認

コマンド
git clean -nxd

リファレンスログから古いコミットへの参照を即時に期限切れにして削除します。

コマンド
git reflog expire --expire=now --all

ガベージコレクションを強制的に実行して、削除されたコミットを含む不要なオブジェクトをクリーンアップ

コマンド
git gc --prune=now --aggressive
0
0
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
0
0