Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1197
Help us understand the problem. What is going on with this article?
@shimotaroo

Gitでやりたいこと、ここで見つかる

概要

「この記事を見れば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 maingit branch -m mainでもOK。

【Git】新人エンジニア、git pushまでの道

Gitでの管理をやめたい

  • デイレクトりごと管理をやめる
$ rm -rf .git/

※これだけGitコマンドではないですが参考までに。

  • ファイル単位で管理をやめる
$ git rm ファイル名

git 管理をやめる

ローカルリポジトリの設定内容(ユーザー名、メールアドレス)を変更したい

  • 全てのローカルリポジトリに設定を反映する
$ git config --global user.name ユーザー名
$ git config --global user.email メールアドレス

--globalをつけるのがポイント

  • 個別のローカルリポジトリに設定を反映する
$ git config user.name ユーザー名
$ git config user.email メールアドレス

gitconfig の基本を理解する

ローカルリポジトリの設定内容を確認したい

$ git config --list

gitconfig の基本を理解する

コミット履歴を確認したい

$ 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 status -s でちょっと幸せになれる

リモートリポジトリの状態をローカルリポジトリに反映したい(最新の状態にしたい)

$ 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 -m 変えたいブランチ名 変更後のブランチ名 

ローカルに存在するブランチを一覧で見たい

$ git branch 

ローカルブランチを削除したい

$ git branch -D ブランチ名

ブランチ名は$ git branchで見れる。

Gitでローカルブランチを削除する

自分が作業しているブランチを移動したい

$ git checkout 移動先のブランチ名

or 

$ git switch 移動先のブランチ名

ブランチを新しく作る&そのブランチに移動したい

$ git checkout -b ブランチ名

or

$ git switch -c ブランチ名

このコマンドでは現在いるブランチの内容を元に新しいブランチが作られますので、ご注意ください。

【Git】あなたが知らない新コマンドswitch/restoreの世界にご招待

ワーキングツリーの修正を取り消したい

$ git checkout .

or

$ git restore .

【Git】あなたが知らない新コマンドswitch/restoreの世界にご招待

リモートリポジトリ(GitHub)のソースをローカルに複製したい

$ git clone リモートリポジトリのURL

ローカルで変更したファイルがあるけどブランチを変えたい(変更分を退避させたい)

  • 基本の使い方
$ git stash
  • メッセージをつけてgit stashする
$ git stash push -m "任意のメッセージ"

git stash saveは非推奨になっているのでgit stash push -mを使用しましょう。

色々な git stash

git stashしたファイルの履歴を確認したい

$ git stash list

新規追加したファイルもgit stashしたい

$ git stash -u

git stashしたファイルを元に戻したい

$ git stash apply 

上記のようにオプションなしだと直前のgit stashが元に戻ります。

色々な git stash

コミット履歴を綺麗にしたい

$ git rebase ブランチ名 

git rebaseを初めて使った際のまとめ

複数のコミットをまとめたい

$ git rebase -i

注意点ですが、まとめる(直前のコミットに統合)ことができるのはpush済みのコミットです。

rebase -i でコミットをまとめる

直前のコミットを取り消したい

  • コミット履歴は残してコミットの内容だけ取り消したい
$ git revert
  • コミット自体を取り消してワークツリーの変更も取り消したい
$ git reset --hard HEAD^
  • コミットだけ取り消したい
$ git reset --soft HEAD^ 

[Git]コミットの取り消し、打ち消し、上書き

直前より前のコミットを取り消したい

  • n個前のコミットを取り消してワークツリーの変更も取り消したい
$ git reset --hard HEAD~{n}
  • n個前のコミットだけ取り消したい
$ git reset --soft HEAD~{n}

ファイルの差分を確認したい

$ git diff

忘れやすい人のための 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なりでコミットメッセージが変更されているかは要確認。

1197
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
shimotaroo
Laravel/CakePHP/Docker/Vue.jsは勉強中

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1197
Help us understand the problem. What is going on with this article?