はじめに
gitちょっとずつ使ってるけど、なかなかわかってないこと多いので整理中。
概念
リポジトリ
ローカルリポジトリ
リモートリポジトリ
コミット
インデックス
ワークツリー
ブランチ
マージ
オリジン
マスター
HEAD
ワークツリー、HEAD、masterがいまいちわかってない。
コマンド一覧
そこそこ使う系
git config --global user.name "namae"
git config --global user.email "e@mail"
git init
git clone <url>
git pull
git push <先repo> <元repo>
git add <file>
git commit -m ''
git status
git diff <file>
git log
git remote add <> <url>
git reset
git tag <tag>
git mv <前> <後>
ブランチ系
git branch <>
git checkout <>
git merge <>
git merge --no-ff <>
git rebase <>
git checkout -b <>
いまいちわからん系
git gc
git revert <commit>
git stash <>
名前似てる系
git reset # なかったことにする
git revert # なかったことにするけどログを残す
git rebase # まとめるらしい
あってんのかな。
こんなときどうする
セットアップ
git config --global user.name "namae"
git config --global user.email "e@mail"
GitHubとかでリポジトリ作ってから作業
git clone <>
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
すでにあるファイルをGitHubとかにpush
git init
git remote add origin <>
git add .
git commit -m "Initial commit"
git push -u origin master
ローカルのリポジトリをGitHubとかにpush
git remote rename origin old-origin
git remote add origin <>
git push -u origin --all
git push -u origin --tags
ブランチモデル
- masterのみ
- masterとdevelop
- masterとnew-feature
- github-flow
- git-flow
github-flowがシンプルでいい感じ。
CI使うとき(Herokuとか)
GitHubとかにpushしたら、しかるべきブランチをHerokuにもpushする仕組み。
GitLabのExampleみてみると、masterブランチはステージング環境にデプロイして、tagつけたらプロダクション環境にデプロイしてそう。
タグつけたら公開って楽で良さそう。
Test and Deploy a ruby application with GitLab CI/CD | GitLab
svnとの比較
checkoutの意味が違うので、混乱する。
svn | git |
---|---|
svnadmin create | git init |
svn checkout | git clone |
svn update | git pull |
svn add | git add |
svn commit | git commit |
svn status | git status |
svn switch | git checkout |
svn merge | git merge |
svn revert | git checkout |
参考
【完全保存版】Git入門におすすめの本5選! | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
よく使う基本Gitコマンド集【厳選19選】 | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
入門git | Travis Swicegood, でびあんぐる |本 | 通販 | Amazon
A successful Git branching model » nvie.com
プルリクエスト/レビューを取り込んだ、よりシンプルなGitHub Flowの運用を図解する (2/2):Gitブランチを使いこなすgit-flow/GitHub Flow入門(終) - @IT