Gitでやりたいこと、ここで見つかる
はじめに
「この記事を見ればGitで困ったことが(だいたい)全て解決する!」 っていう記事をまとめます。
ネット上にある記事は 「git rebaseの使い方」 といった感じでコマンド名は知っておかないと辿り着けないものが多いですが、「Gitで○○したい!」とか「Gitで△△してしまった...」って時にコマンド名からじゃなく問題から逆引きできる記事があればいいなと思ったことがあったからです。
同じことを感じていた方がいることを祈って書きます。(ぜひLGTMをお願いします☆★)
2020/9/21:追記
いただいたコメントを元に修正、追記しました。
コメントいただいた方々、ありがとうございますm(__)m
この記事の使い方
ボリュームがそこそこ多いので、右に表示されている目次から探して該当の箇所に飛んでいただければと思います。
※この記事では各Gitコマンドの詳細の使い方(特にオプション)は割愛しているので、以下の感じで活用していただければと思います。
1. Gitでやりたいこと、困っていることを目次から探す
2. どんなコマンドを使えば良いのかがわかる(←これがこの記事の役割)
3. 貼っている参考記事で詳細を見る or 自分でググる
注意点
※この記事では僕が使ったことのあるGitコマンドだけをまとめてます。
ローカルのソースファイルをGitHubにプッシュするまでの流れを知りたい(超基本)
Gitを使う上でこの一連の流れは絶対に抑えておきたいやつ
//Gitでの管理を始める(=ローカルリポジトリ作成)
$ git init
//ローカルリポジトリの設定を行う(GitHubを登録)
$ git config user.name GitHubのユーザーネーム
$ git config user.email GitHubのメールアドレス
//変更分をステージングにあげる
$ git add .
//ローカルリポジトリにあげる
$ git commit -m "コミットメッセージ"
//ローカルリポジトリにmainブランチを新規作成
git branch -M main
//リモートリポジトリ(GitHub)を登録
$ git remote add origin リモートリポジトリのURL
//リモートリポジトリにプッシュする
$ git push origin main
git branch -M main
はgit branch -m main
でもOK。
Gitでの管理をやめたい
- デイレクトりごと管理をやめる
$ rm -rf .git/
※これだけGitコマンドではないですが参考までに。
- ファイル単位で管理をやめる
$ git rm ファイル名
ローカルリポジトリの設定内容(ユーザー名、メールアドレス)を変更したい
- 全てのローカルリポジトリに設定を反映する
$ git config --global user.name ユーザー名
$ git config --global user.email メールアドレス
--global
をつけるのがポイント
- 個別のローカルリポジトリに設定を反映する
$ git config user.name ユーザー名
$ git config user.email メールアドレス
ローカルリポジトリの設定内容を確認したい
$ git config --list
コミット履歴を確認したい
$ git log
- コミット履歴を1コミット1行で見たい
git log --oneline
コミットid(乱数)、コミットの種類、コミットメッセージが1行で表示される。
⇨git logを使ってコミット履歴を閲覧する方法【初心者向け】
⇨git log全部入り
コミット履歴だけでなくHEADやブランチの動きなど細かいところまで確認したい
$ git reflog
これは***"Gitでやっちまった時"***に使いますねw
(僕は何度かお世話になりました)
⇨Git Advent Calendar 201229日目
いざという時のためのgit reflog
ローカルリポジトリのステータスを確認(変更ファイル、追加ファイルがあるかとか)
$ git status
リモートリポジトリの状態をローカルリポジトリに反映したい(最新の状態にしたい)
$ git pull origin リモートのブランチ名
$ git pull origin main
は以下の2つのコマンドの合体↓
$ git fetch origin main
$ git merge origin main
まあ、git pull
を使うケースの方が圧倒的に多いかと。
⇨サル先生のGit入門
⇨git fetchの理解からgit mergeとpullの役割
間違えて実行したpullを取り消したい(merge失敗(コンフリクト)時)
$ git merge --abort
実務でdevelopブランチ(開発用)にmainブランチをpullしてしまって焦ったけどこれで解決した...
新しくブランチを作成したい
$ git branch ブランチ名
git branch
コマンドのいくつかの昨日はgit switch
やgit restore
で代替できるようになりましたのでこちら参考までに。(僕は使ったことありません)
【Git】あなたが知らない新コマンドswitch/restoreの世界にご招待
既存のブランチの名前を変えたい
$ git branch -m 変えたいブランチ名 変更後のブランチ名
ローカルに存在するブランチを一覧で見たい
$ git branch
ローカルブランチを削除したい
$ git branch -D ブランチ名
ブランチ名は$ git branch
で見れる。
自分が作業しているブランチを移動したい
$ git checkout 移動先のブランチ名
ブランチを新しく作る&そのブランチに移動したい
$ git checkout -b ブランチ名
このコマンドでは現在いるブランチの内容を元に新しいブランチが作られますので、ご注意ください。
リモートリポジトリ(GitHub)のソースをローカルに複製したい
$ git clone リモートリポジトリのURL
ローカルで変更したファイルがあるけどブランチを変えたい(変更分を退避させたい)
- 基本の使い方
$ git stash
- メッセージをつけてgit stashする
$ git stash push -m "任意のメッセージ"
git stash save
は非推奨になっているのでgit stash push -m
を使用しましょう。
新規追加したファイルもgit stashしたい
$ git stash -u
git stashしたファイルの履歴を確認したい
git stash list
git stashしたファイルを元に戻したい
$ git stash apply
上記のようにオプションなしだと直前のgit stash
が元に戻ります。
コミット履歴を綺麗にしたい
$ git rebase ブランチ名
複数のコミットをまとめたい
$ git rebase -i
注意点ですが、まとめる(直前のコミットに統合)ことができるのはpush済みのコミットです。
直前のコミットを取り消したい
- コミット履歴は残してコミットの内容だけ取り消したい
$ git revert
- コミット自体を取り消してワークツリーの変更も取り消したい
$ git reset --hard HEAD^
- コミットだけ取り消したい
$ git reset --soft HEAD^
直前より前のコミットを取り消したい
- n個前のコミットを取り消してワークツリーの変更も取り消したい
$ git reset --hard HEAD~{n}
- n個前のコミットだけ取り消したい
$ git reset --soft HEAD~{n}
ファイルの差分を確認したい
$ git diff
直前のコミット(push済み)のコミットメッセージを修正して再度プッシュしたい
$ git commit --amend -m "新しいコミットメッセージ"
$ git push -f origin 先ほどpushしたリモートブランチ
git commit --amend -m "新しいコミットメッセージ"
を実行した後にコミットメッセージが本当に変わっているかgit log
で確認した方が良いです。
他のブランチでした特定のコミットを現在のブランチに取り込みたい
$ git cherry-pick コミットID
直前のコミットメッセージを変更したい
$ git commit --amend -m "新しいコミットメッセージ"
一応git log
なりgit log --oneline
なりでコミットメッセージが変更されているかは要確認。
Discussion