Git

gitを使って、バージョン管理をする。

Gitクライアント

初期設定

git config --global user.name "<Your Name>"
git config --global user.email "<your.email@example.com>"
git config --global color.ui true

Git - Git の設定

レポジトリクローン

クローン

レポジトリのクローン:ソースコードのダウンロード

git clone <レポジトリURL>

レポジトリクローン

既存のプロジェクトに貢献したいけれども、そのリポジトリにプッシュする権限がないという場合は、プロジェクトを「フォーク」できます。 「フォーク」するとは、GitHub があなた専用にそのプロジェクトのコピーを作るということです。あなた自身の名前空間に置かれるので、そこには自分でプッシュできます。

コミット履歴の確認

# リッチ表示
git log
# 一行ずつ表示
git log --oneline

ブランチ表示

git fetch
git branch -a

Git のリモートのブランチを確認する #Git - Qiita

ソースコードの変更

ブランチの切り替え

新しくブランチを作成して切り替える場合

git switch -c <new branch name>

ブランチを切り替える場合

git switch <branch name>

変更

エディターで、ソースコードの修正を行う。

状態確認

git status

変更内容の確認

git diff

ステージング

  • git add -A(Allの略)→ 全部追加(迷ったらこれ)
  • git add -u(Updateの略)→ 変更・削除だけ(新規は除く)

補足(必要なときだけ):

  • git add . → 今いるフォルダ配下だけ追加
  • git add ファイル名 → 特定のファイルだけ
  • git add -f(Forceの略)→ ignore無視(基本使わない)

変更のコミット

ステージング後に実施するのが基本。

  • git commit -m "message"メッセージ付きでコミット(基本)
  • git commit -am "message"add + commitを一発(新規ファイルは除く)

変更を取り消し(コミットの前)

git checkout -f

変更のプッシュ

git push

プルリク

変更内容を取得してすぐに反映する

git pull
git push
# プリリク作成

add, commit取り消し

変更取り消し

  • git reset --soft(Softの略)→ commitだけ戻す(addは残る)
  • git reset(= --mixed / Mixedの略)→ addを外す(ファイルは残る)
  • git reset --hard(Hardの略)→ 全部(コミット、ステージング、変更)消す

コミットの打ち直し

git revert <commit-id>

新規レポジトリ追加

新しいGitリポジトリの作成

git init

リモートリポジトリの管理

登録されているリモート一覧を表示

  • 確認
git remote -v
  • 追加

リモート(例:origin)を登録する

git remote add <名前> <URL>

# 例:
git remote add origin https://github.com/user/repo.git
  • 削除

指定したリモートを削除する

git remote remove <名前>

#例:
git remote remove origin

その他

  • リモートから変更取得 git fetch → リモートの最新状態をローカルに取得(マージはしない)

  • 特定コミットを適用 git cherry-pick → 別ブランチの特定コミットだけを取り込む

    指定したコミットだけ現在のブランチに適用

    git cherry-pick <コミットID>
    
  • 履歴を整理 git rebase → コミット履歴を一直線に並べ直す(履歴がきれいになる)

  • 変更を一時保存 git stash → 作業中の変更を退避して、作業ディレクトリをクリーンにする

  • タグ付け git tag → 特定のコミットに名前(バージョンなど)を付ける

  • 管理しないファイル指定 .gitignore → Gitで追跡しないファイルやフォルダを設定する


ファイルを戻す

編集したファイルを最新のコミット時点に戻す場合

git checkout -f

特定のコミットの特定のファイルを戻す

git checkout <hash> <file>

リモートのブランチを使う

~/YS1  git branch -r
  origin/HEAD -> origin/master
  origin/dev
  origin/master
~/YS1  git pull origin dev
From github.com:YumaYX/YS1
 * branch            dev        -> FETCH_HEAD
Already up to date.
~/YS1  
~/YS1  git branch
* master
~/YS1  git checkout dev
branch 'dev' set up to track 'origin/dev'.
Switched to a new branch 'dev'
~/YS1  git branch
* dev
  master
~/YS1  

new repo commands

reponame=""

echo "# ${reponame}" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:YumaYX/${reponame}.git
git push -u origin main
git remote add origin git@github.com:YumaYX/${reponame}.git
git branch -M main
git push -u origin main

ブランチ自体をそのコミットまで戻す(履歴を書き換える)

git reset --hard <commit-hash>

git reset --hard a1b2c3d

#=> pushしている場合は、force push