技術メモ

技術メモ

ラフなメモ

はじめてのGitメモ

git メモ

操作

git リポジトリとの差分

前回の状態との差分を確認できる

git status

上記の出力を簡略化したコマンド

git status -s

差分は 2 文字のパターンで表現されている。使われる文字は ? A M である。

最初の文字はステージされている状態を意味している。2文字目はファイルが更新されたかどうかを意味している。

リポジトリとの差分は上記の git status -s で分かるがファイルの行単位で確認したい場合は以下 git diff のコマンドを使う。直近のコミットと現在のステージされていない変更のみを表示している。なので変更をステージしてしまうと git diff には何も表示されなくなる。

git diff

変更のコミット

ステージされている変更内容をリポジトリにコミットする

git commit

以下のようにすると git add を省略できる。

git commit -a -m "Commit message hoge"

ファイルの無視

git add * などで自動で追加されたくないファイルがある場合は .gitignore ファイルに記載する。以下が .gitignore の記載サンプル集

ファイルの削除

ファイルを Git から削除する場合は、追跡対象(ステージングエリアから削除)してコミットする。 git rm は左記に加えて、作業ディレクトリからファイルを削除する。

git rm

変更されているファイルを強制的に削除する場合は以下

git rm -f

ファイル自体はディスクに残すが、Gitの追跡対象からは外す場合

git rm --cached ${fileNm}

コミット履歴の閲覧

git log

オプション(いろいろある)

-p 各コミットで反映された変更点を表示する

コミットのやり直し

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

git commit --amend

ブランチの作成

git branch ${branch}

現在のブランチを切り替える

git checkout ${branch}

ブランチをマージする

  • merge
git merge ${branch}

conflict が発生した場合は手動で差分内容を確認してマージする

  • rebase

ブランチを削除する

git branch -d ${branch}

用語

HEAD

現在使用しているブランチの先頭を表す名前

Push

ローカルリポジトリの内容をリモートリポジトリにアップロードする

origin というリモートリポジトリの master というブランチにプッシュする

git push origin master

origin というリモートリポジトリとしたが、実際には別名となっていて、これはどこを指しているのかは

$ git config --list | grep origin
remote.origin.url=git@github.com:d-tsuji/AtCoder.git

などとして分かる。

以下のコマンドで別名を付与することができる。

git remote add [shortname] [url]

追加したあとは以下のようになっている。

$ git remote -v
origin  git@github.com:d-tsuji/AtCoder.git (fetch)
origin  git@github.com:d-tsuji/AtCoder.git (push)

Clone

リモートリポジトリを複製する

Pull

リモートリポジトリからローカルリポジトリを更新する

Tips

他の人のリポジトリから fork して Pull request を出すまで

frok後のリポジトリをfork元のリポジトリから最新化

git remote add upstream git@github.com:d-tsuji/AtCoder.git
git fetch upstrem
git rebase upstream/master

その時に以下のメッセージが出たのだがまだわかっていない。

$ git rebase upstream/master
First, rewinding head to replay your work on top of it...
Fast-forwarded master to upstream/master.

参考

あとで読みたい