git lab にあがっているブランチのソースを取得する方法
git status で変更がないことを確認
git fetch
git checkout -b [ブランチ名] origin/[ブランチ名]
git checkout -b feature_11_04 origin/feature_11_04
git stash で変更退避・stashリスト表示
git stash
git stash list
変更復元、復元したstashを削除する
# 最新のstashを復元し、削除
git stash pop
# N番目のstashを復元し、削除
git stash pop stash@{N}
stashは復元し、復元したstashを残す
# 最新のstashを復元し、残す
git stash apply
# N番目のstashを復元し、残す
git stash apply stash@{N}
N番目のstashを削除する
# 最新のstashを削除
git stash drop
# N番目のstashを削除
git stash drop stash@{N}
git stash で隠したコードと今のコードの変更点を表示するコマンド
git stash show -p stash@{0}
もしくは
git show stash
特定のファイルをgitの管理外とする
git rm index.html
特定のファイルのlogと修正内容を確認する
git log -p index.html
SSHキー作成、GitHubとのSSH接続を確認する
ssh-keygen -t rsa
ssh -T git@github.com
ssh-keygenはどこのディレクトリで実行してもホームディレクトリにキーが作成されるようになっている。
aliasの追加・削除・確認
git config --global alias.st status
git config --global --unset alias.st
git config --global --edit
ワーキングで変更中のファイル、addでステージングに移したファイルすべて変更破棄
(最新のコミット時の状態と一致した状態にする)
git reset --hard
指定されたコミットIDの状態に戻す
git reset --hard <commit ID>
これよりあとにコミットした内容はlog含めすべて破棄。
新しくファイルを作成してそのファイルをcommitしていれば、そのファイルは削除される。
指定したコミットIDより後にコミットしたlog破棄
(コミットID時のaddとcommitも無効にする)
以下のログの場合、
$ git log --oneline
3a61ab6 12/28(thu) delete config file
5c32ada 12/27(wed) modify config file
abfac40 12/26(tue) add config file
bf0e0fd 12/25(mon) create new project
abfac40より後の5c32adaと3a61ab6のlogを破棄したい場合
git reset abfac40
3a61ab6 5c32ada のlogは破棄される。
3a61ab6 5c32ada の変更内容は保持される。
addした後と、最新コミットとの変更箇所を確認(ステージングエリアファイルとの比較)
git diff --cached
modified(変更)ファイルをコミット(addを省略)
git commit -a
git commit -a -m "コメント"
最新のコミットのコメントを編集・修正したい場合
git commit --amend
Githubにpushしたcommitコメント修正する場合
git commit --amend
(エディタが立ち上がるのでコメント修正する)
git push -f origin master
(強制的にpushして最新のコメントを上書き)
Githubにpushしたファイルを取り消す場合
git reset --hard <commit ID>
(指定されたコミットIDの状態に戻す)
git push -f origin master
(強制的にpushされた内容を削除する)
もしくは
git revert <commit ID>
git push origin master
revertはコミットを取り消したというログが残る。
resetして強制pushした方は取り消した記録は残らない。
直前のコミットにファイルを追加・修正する場合
git add <追加・修正したファイル名>
git commit --amend --no-edit
# --no-editでコミットメッセージは変更しない。コミットIDは更新される。
もしくは
git reset HEAD^
git add .
git commit
^は一つ前という意味。最新コミットの一つ前を指定している
^^で二つ前。~2でも良い。HEAD~5だとHEADの5つ前のコミット。
二つのcommit間の差分を出力
git diff <コミットID1> <コミットID2>
現在のブランチの状態からの差分を出力
git diff <コミットID1>
二つのcommit間で差分があるファイル名の一覧を取得
git diff --name-only <コミットID1> <コミットID2>
二つのcommit間の差分をファイルを指定して出力
# ファイル名一覧取得
git diff --name-only <コミットID1> <コミットID2>
# ファイル名を指定して差分出力
git diff <コミットID1> <コミットID2> <ファイル名>
git commitで特定ファイルのみコミット
# 「--」は無くても可
git commit -m 'add' -- hoge.txt