gitのメモ

2020-08-25

こんにちは、0371です。

今回は、gitのコマンドをまとめて、いつでも見返せるようにしたいと思います。
主要なコマンドを羅列してみましたので、Ctrl + Fで記事内検索をして使ってください。

場面ごとのコマンドセット

gitのインストールmacOS

// Homebrewのインストール
// インストール中に Press RETURN to continue or any other key to abort と表示されたらEnterを押してください。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

// gitのインストール
brew update
brew install git

// gitがインストールされたかの確認
git --version

// gitのバージョンがインストールしたものと一致しない場合
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshenv
source ~/.zshenv

// gitのアップグレード
brew upgrade git

gitのインストールwindows編 下記のURLからインストーラーをダウンロードして起動してください。

Git for Windows
"https://gitforwindows.org/"

基本的には設定はデフォルトでいいのですが、Configuring the line ending conversionの選択肢では、三番目を選択してください。

PCで初めてgitを使用し、pushする時

git init
git add .
git commit -m "[init] first-commit"

ls -al ~/.ssh
// ssh鍵の確認 id_rsa.pub id_rsa があればOK
// ssh鍵がなければ以下の作業を行う

ssh-keygen -t rsa -C "githubやbitbucket等で作成したメールアドレス"

// 入力する部分は全て空欄でEnter
// passphrase はお好みで

pbcopy < ~/.ssh/id_rsa.pub

// githubやbitbucket等のアカウントのsettingsで、ssh公開鍵を設定してください

// githubやbitbucket等でリモートリポジトリを作成

git remote add origin 作成したリモートリポジトリのURL
git push -u origin master

// origin はURLのショートカットのような役目をする。
// git push -u origin master は、次回以降からは git push でリモートリポジトリに変更を送信することができるようになる

プロジェクトでの作業を保存

git add .
git commit -m "コミットメッセージ"
git push


// git add . 
// 変更されたファイルをステージングする

// git commit -m "コミットメッセージ"
// エディターを開かずに、一行でコミットメッセージを入力できる

// git commit -v
// コミットの変更箇所の確認ができる

// git push
// リモートリポジトリに変更箇所をスナップショットで記録する。

他人のコードをクローンして、ブランチを切ってプルリクを送る

// 事前に代表のリモートリポジトリでチームを作り、アクセス権限を許可してください。

git clone リモートリポジトリのURL
git checkout -b ブランチ名
// ファイル変更をする
git add .
git commit -m "コミットメッセージ"
git push origin ブランチ名
// プッシュ後にターミナル上で表示されるURLにアクセスし、プルリクを作成する
// コードレビューを経て、マージされる
// master ブランチに移動
git checkout master
// リモート側の新しくなったmasterブランチをpullする
git pull origin master
// マージ後はブランチが不要になるので、削除する。
git branch -d ブランチ名

// 二回目以降

git checkout -b ブランチ名
// ファイル変更をする
git add .
git commit -m "コミットメッセージ"
git push origin ブランチ名
// プッシュ後にターミナル上で表示されるURLにアクセスし、プルリクを作成する
git pull origin master
git branch -d ブランチ名

コマンド集

ユーザーネームとメールアドレス、エディターの登録
この情報は、.gitconfigに保存されます。

git config --global user.name "登録したユーザーネーム"
git config --global user.email 登録したメールアドレス
git config --global core.editor "エディター --wait" 

// エディターの設定は任意

ローカルリポジトリを作成

cd プロジェクトディレクトリ
git init

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

リモートリポジトリから、プロジェクトをコピーする

git clone プロジェクトのURL

// git clone プロジェクトのURL
// リモートリポジトリから、URLのプロジェクトをコピー

ブランチを新規作成する

git branch ブランチ名
// git branch feature
// ブランチを作成するだけでは、ブランチの切り替えは行われない

ブランチを切り替える

git checkout 既存ブランチ名
// git checkout feature

ブランチを新規作成して切り替える

git checkout -b 新ブランチ名
// git checkout -b feature

全てのブランチを表示する

git branch -a

現在位置のブランチの名前を変更する

git branch -m ブランチ名
// git branch -m feature

ブランチを削除する

git branch -d ブランチ名
// git branch -d feature

// 強制削除 (マージされてない変更がある場合は削除されない)
// git branch -D ブランチ名

変更差分を確認

// git addする前
git diff
git diff ファイル名

// git add した後
git diff --staged

変更履歴の確認

git log

// 一行で表示
// git log --oneline

// ファイル単体の変更差分
// git log -p ファイル名

// コミット数の制限をして表示
// git log -n コミット数

ファイルへの変更を取り消す

git checkout -- ファイル名
git checkout -- ディレクトリ名

// 全ての変更を取り消す
git checkout -- .

addを取り消す

git reset HEAD ファイル名
git reset HEAD ディレクトリ名

// 全ての変更を取り消す
git reset HEAD .

直前のコミットをやり直す

// pushした後のコミットは絶対に--amendで修正しないでください!
git commit --amend

コミットにタグをつける

git tag -a タグ名 -m "メッセージ"

コミットにタグをつける(簡易版)

git tag タグ名

過去のコミットにタグをつける

git tag タグ名 過去のコミット名

タグをリモートリポジトリに送信する

git push リモート名 タグ名
// git push origin new_tag

タグをリモートリポジトリに一斉送信する

git push origin --tags

タグの一覧を表示する

git tag

// 検索パターンを指定する
// git tag -l 検索ワード

ファイルの削除

git rm ファイル名
git rm -r ディレクトリ名

// ファイルは残して、gitの記録からは削除する
git rm --cached ファイル名

記録の送信

git push origin master

// origin はURLのショートカットのような役目をする。
// 例: git remote add origin リモートリポジトリのURL

最新の状態を取得する

git pull

リモートリポジトリを新規追加する

git remote add リモート名 リモートURL

リモートを表示する

git remote

// URLの表示
git remote -v

リモートリポジトリから情報を取得する

git fetch リモート名
// git fetch origin

変更履歴を統合する

git merge ブランチ名
git merge リモート名/ブランチ名
// git merge origin/master

リモートリポジトリから情報を取得する(プル)

git pull リモート名 ブランチ名
// git pull origin master

// pullは fetchと mergeを一度に行っている
// 基本的には pull よりも fetch を使用する

リモートリポジトリの詳細情報を表示する

git remote show リモート名
// git remote show origin

リモートを変更する

git remote rename 旧リモート名 新リモート名
// git remote rename old new

リモートを削除する

git remote rm 旧リモート名 新リモート名
// git remote rm old new

コマンドにエイリアスをつける

git config --global alias.短縮コマンド名 正規コマンド名
// 例: git config --global alias.br branch

続きはまた今度

用語集

コミットの粒度

コミットする際の修正量のこと
目安としては、1機能ができたらなどが望ましい

例: headerができたからコミット
  	footerができたからコミット
		navbarができたからコミット

ブランチ

作業を並行して行うために、ブランチを使って分岐開発していく
ブランチはコミットを指しているポインタ

HEAD

現在作業中のブランチへのポインタを指す

コンフリクト(衝突)

コンフリクトが発生すると、対象のファイルにコードが自動的に追加される

<<<<<<< HEAD
 自分の編集した部分
======
 他の人が編集した部分
>>>>>>> feature

どちらかの編集した部分を残す

git add 対象のファイル
git commit -m "[fix] confrict"

コンフリクトを防ぐには

・複数人で同じファイルを変更しない
・pullや mergeする前に、変更中の状態を無くしておく(commitやstashをしておく)
・pullするときは、pullするブランチに移動してからpullする

プルリクエスト

自分の変更したコードをリポジトリに取り込んでもらえるように依頼する機能
ブランチをpushした後に発行できる

今日の一言

ひよこをなでなでしたい。