はじめての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.
参考
- Git - Book
- サルでもわかるGit入門 〜バージョン管理を使いこなそう〜【プロジェクト管理ツールBacklog】
- [Git] .gitignoreの仕様詳解 - Qiita
- gitのリモートリポジトリの更新を確認する - Qiita