git
参考:
table:commands
git init
git clone <url>
git clone -b <branch> <uri> リモートから特定のブランチを指定してcloneする
git pull
git checkout <branch_or_commit-id>
git checkout . 作業コピーのリセット
git checkout -b <branch> 今のブランチから新たにブランチを作成
git checkout -b <local_branch> origin/<remote_branch> リモートブランチをローカルにcheckoutする
git add . 全ての変更をステージング
git push -f で強制Push
git push --delete origin <branch> リモートブランチの削除
git branch -m <old_branch> <new_branch> ローカルブランチ名の変更
git branch -d <branch> ブランチの削除 -Dにすると強制削除
git commit --amend -m <message> 最新コミットのコミットメッセージを編集
git merge <branch> 今のブランチに、指定ブランチを取り込む
git tag <tag-name> 今のコミットに付く
git tag -d <tag-name> タグの削除
git remote add origin <repository>
git remote rm origin
リモートブランチをチェックアウトする
code:git
git pull
git checkout -b <local branch name> origin/<remote branch name>
今のブランチを特定のコミットに戻す
git reset --soft <commit id> : ソースは今のまま
git reset --hard <commit id> : ソースも戻す
コミットIDにHEADを使うと、最新のコミットになる
git reset --hard HEADで、作業コピーの変更を全消去できる
コミットIDにHEAD^を使うと、直前のコミットになる
git reset --soft HEAD^で、コミットの取り消しができる
commit idはgit logで調べられる
マージ済みブランチを一括削除
git branch --merged|egrep -v '\*|develop|master'|xargs git branch -d
ブランチ同士のDIFF
コミットメッセージの修正
git commit --amend -m "cssを修正"
git rebase
複数のコミットをまとめて一つにしたり、コミット順を付け替えたりする
その他機能とか
git config周り
table:git config
git config --list 現在のコンフィグ一覧を見る
git config --global システム全体に設定
git config --local 今のフォルダにだけ設定
フォルダローカルでgitのコミットアカウントを操作
code:sh
git config --local user.name 名前
git config --local user.email "メールアドレス"
githubでissueを自動でクローズする
コミットのコメントに close #10 などとすると勝手にイシューをクローズしてくれる。らしい
コミット履歴からファイルを削除
でかいファイルを入れてしまって、githubにアップロードできなくなった時などに
多分最初の1回目でしか動作しない?
リベースメモ
参考
リベースとマージは似た概念である
マージが、マージコミットを作成して複数のブランチを統合するのに対して、リベースは移植元のコミットを移植先に継ぎ足す形で統合する。
code:この場合のコマンド例
git checkout experiment
git rebase master
git checkout master
git merge experiment
マージと違って、あたかも移植元ブランチが存在しなかったような履歴になるので、スッキリする。個人的にはやめてほしい
コミット履歴を編集したい
要らないFixコミットなんかを消すってのはよくやる作業になると思われる
考え方:
gitの履歴編集は、基本的にブランチAからブランチBへの転記の形で行われる。
この転記は同一ブランチ間でも行える。が、ちょっと難しくなるのでそれは忘れる
転記ブランチBを作って、元ブランチAから消すコミット、残すコミットを選択して転記する。
この操作は git rebase -i <toBranch> によって行われる
code:sample
$ git checkout edit-branch
$ git rebase -i --committer-date-is-author-date new-branch; こうしないとコミット日付が変わってしまう
$ git checkout master
$ git mearge new-branch