LoginSignup
2
4

More than 1 year has passed since last update.

【Git】基本的なgitコマンド

Last updated at Posted at 2023-02-06

はじめに

Railsなどを中心に勉強中のエンジニア初心者が他の記事を参考にしたり、実際に実装してみたりして、アウトプットの一環としてまとめたものです。
間違っていることもあると思われるので、その際は指摘いただけると幸いです。

git init

ローカルリポジトリが作成される(.gitディレクトリが作成される)。

$ git init

>
	・リポジトリ
		・圧縮ファイル
		・ツリーファイル
		・コミットファイル
	・インデックスファイル
	・設定ファイル

git config

gitにユーザー情報を登録する。誰がコミットしたかなどの履歴に残る。

$ git config --global user.name "ユーザー名"
$ git config --global user.email "メールアドレス"

$ git config --list
	>
	credential.helper=osxkeychain
	init.defaultbranch=main
	user.name=ユーザー名
	user.email=メールアドレス

git clone <リポジトリ名>

リモートリポジトリからローカルリポジトリにクローン(コピー)を作成する。

$ git clone https://github.com/aaa/bbb.git

git add

変更箇所をローカルのワークツリーからステージに追加する(コミットする変更を準備する)。

$ git add <ファイル名>
$ git add <ディレクトリ名>
$ git add .

git commit

ローカルのステージからローカルリポジトリに変更箇所を記録する。

$ git commit                        # gitエディタが立ち上がり、メッセージを追加する事ができる
$ git commit -m "<コミットメッセージ>"    # gitエディタが立ち上がることなく、メッセージを追加する事ができる。
$ git commit -v                     # gitエディタが立ち上がり、さらにどのような変更を加えたかをエディタ上から確認する事ができる

git status

現在の変更状況を確認する。

ローカルリポジトリに反映されていない変更分が表示される(ワークツリー内の変更箇所、ステージ内の変更箇所)。

コミットしてローカルリポジトリに変更箇所を取り込むことで表示されなくなる。

$ git status

git diff

変更差分を確認する。

# git addする前の変更分確認
$ git diff <ファイル名>

# git addした後の変更分確認
$ git diff --staged

git log

変更履歴(コミット履歴)を確認する。

# 変更履歴を確認する
$ git log

# 変更履歴を1行で確認する
$ git log --oneline

# ファイルの変更差分を表示する
$ git log -p index.html

# 表示するコミット数を制限する
$ git log -n <コミット数>

git remote add <リモート名> <リモートリポジトリURL>

<リモート名>に指定した名前で、<リモートリポジトリ>のURLを登録する。

今後は<リモート名>に指定した名前で、GitHubリポジトリにプッシュしたりクローンしたりできる。

リモート名には通常はoriginが用いられる。

$ git remote add origin https://github.com/aaa/bbb.git

git push <リモート名> <ブランチ名>

ローカルリポジトリの内容をリモートリポジトリにプッシュする。

$ git push origin master

# origin(登録したリモートリポジトリのURL)に対してmasterブランチをプッシュしている

git reset

変更分を取り消す。

HEADは現在自分がいる位置のこと(どのブランチのどのコミット位置か)。

オプションとして--soft--hardなどがあるが、基本的には--softを付けて使うと良い。

注意点としてリモートリポジトリにプッシュ済みのコミットはやり直してはいけない。

# ステージから変更分を取り消す(ワークツリーの変更分には影響がない)

$ git reset HEAD <ファイル名>      # ファイルの変更を取り消す
$ git reset HEAD <ディレクトリ名>    # ディレクトリの変更を取り消す
$ git reset HEAD .              # 全ての変更を取り消す

# コミットのみを取り消す場合は:--soft
	# コミットコードを指定
	$ git reset --soft <commitID>
	 
	# 直前のコミットを取り消しする場合
	$ git reset --soft HEAD^

# コミット、ステージ、ワークツリーの変更が全て取り消される
	# コミットコードを指定
	$ git reset --hard <commitID>
	 
	# 直前のコミットを取り消しする場合
	$ git reset --hard HEAD^

git commit --amend

直前のコミットのみやり直す事ができる。

リモートリポジトリにプッシュしたコミットはやり直してはいけないため注意。

$ git commit --amend

git remote

設定しているリモートの情報を表示する。

# リモートリポジトリの登録名称を表示する
$ git remote
	>
	origin

# リモートリポジトリのURLを表示する
$ git remote -v
	>
	origin  https://github.com/aaa/bbb.git (fetch)
	origin  https://github.com/aaa/bbb.git (push)

# リモートリポジトリの詳細情報を表示する
# 表示される情報は、「fetchとpushのURL」、「リモートブランチ」、「pullの挙動」、「pushの挙動」。
$ git remote show origin
* remote origin
  Fetch URL: https://github.com/aaa/bbb.git
  Push  URL: https://github.com/aaa/bbb.git
  HEAD branch: main
  Remote branch:
    main tracked
  Local ref configured for 'git push':
    main pushes to main (up to date)

git fetch

リモートリポジトリから情報を取得する。なにはともあれとりあえず、git fetchするようにする。

$ git fetch
$ git fetch <リモート名>

git pull

リモートリポジトリから情報を取得してマージする。

基本的にはgit fetchで情報を取得したのちに、fetchしてきた情報を確認したうえで、ローカル上でマージする方が好ましい。

$ git pull <リモート名> <ブランチ名>
$ git pull origin master

# 上記コマンドは省略可能
$ git pull

# 下記コマンドは上記コマンドと同じ結果になる
$ git fetch origin master
$ git merge origin master

git branch <ブランチ名>

ブランチを新規追加する。ブランチの切り替えまでは行われない。

$ git branch feature    # featureブランチを新規追加する

git branch

ブランチの一覧を表示する。

-aオプションをつけるとリモートブランチの情報も含めて全て表示する

# ローカルブランチの一覧を表示する
$ git branch

	>
	* develop                # 「*」は現在いるブランチを表している
	  main

# リモートも含めてブランチの一覧を表示する
$ git branch -a

	>
	* develop                # 「*」は現在いるブランチを表している
	  main
	  remotes/origin/main    # 「-a」オプションをつけるとリモートブランチの情報も含めて全て表示する

git checkout <ブランチ名>

ブランチを切り替える。

-bオプションをつける事で、ブランチの新規作成と切り替えを同時に実行できる。

# 別の既存ブランチに切り替える
$ git checkout <既存ブランチ名>

# ブランチを新規作成し、作成したブランチに切り替える
$ git checkout -b <新規ブランチ名>

git branch -d <ブランチ名>

-dオプションを付ける事で、対象のブランチを削除する事ができる(masterブランチにマージされていないブランチは削除できない)。

-Dオプションを付けると、強制的にブランチを削除する事ができる。

# ブランチを削除する(masterブランチにマージされていないブランチは削除されない)
$ git branch -d feature

# 強制的にブランチを削除する
$ git branch -D <ブランチ名>

git merge

作業中のブランチを指定したブランチにマージする

# ローカルリポジトリのブランチにマージする
$ git merge <ブランチ名>

# リモートリポジトリのブランチにマージする
$ git merge <リモート名/ブランチ名>
$ git merge origin/master

git stach

作業を一時避難する。

作業途中に、コミットせずにワークツリーの差分を元に戻したいときに使用する(急遽バグ対応などをする必要がある場合など)。

# 作業途中の変更分を一時避難する
$ git stash

# 避難した作業を確認する
$ git stash list

# 避難した作業を復元する(以下のコマンドは避難作業の復元と削除を同時に実行する)
$ git stash pop

git remote rename <旧リモート名> <新リモート名>

リモート名を変更する

$ git remote rename origin tutorial      # リモート名がoriginからtutorialに変更される 

git remote rm <リモート名>

ローカルリポジトリとリモートリポジトリの連携を削除する(リモートリポジトリの情報は削除されない)。

$ git remote rm origin

git branch -m <ブランチ名>

現在作業しているブランチの名前を変更する。

$ git branch -m new_branch

.gitignore

.gitignoreに記載されているファイルはgitで管理されない。

自動生成されるファイルやパスワードが記載されているファイルなどはgitで管理しないように.gitignoreに記載する。

# .gitignoreファイルについて

# #から始まる行はコメント

# 指定したファイルを除外
index.html

# ルートディレクトリを指定
/ronn.html

# ディレクトリ以下を除外
dir/

# /以外の文字列にマッチ「*」
/*/*.css

git rm <ファイル名>

ファイルの削除を記録する。

# ファイル(ディレクトリ)ごと削除
$ git rm <ファイル名>
$ git rm <ディレクトリ名>

# ファイルを残したいとき
$ git rm --cached <ファイル名>

git mv <旧ファイル> <新ファイル>

ファイルの移動を記録する(linuxmvコマンドと同じ機能)。

# 同様のコマンド①
$ mv <旧ファイル> <新ファイル>

# 同様のコマンド②
$ git mv <旧ファイル> <新ファイル>
$ git rm <旧ファイル> <新ファイル>

git config alias.<エイリアス> <コマンド>

コマンドにエイリアスをつける(別名をつける)。

--globalをつけるとPC全体の設定となる。

$ git config --global alias.ci commit
$ git config --global alias.st status
2
4
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
2
4