git 全体構造と使い方とコマンドの図解。
※2019.08.02追記
独習Git読みました。下記の記事には正しくない内容が多分に含まれていますので気をつけてください。
全然まとまってないけど。
全体的な使い方
各リポジトリ等の関係の図解
- https://qiita.com/kyoyyy/items/161b6905f45bee2efe21
- Gitではじめるバージョン管理 〜ローカルリポジトリでファイルを管理してみよう〜 | Hivelocity (ハイベロシティ) デジタルでビジネスを最適化
- Git入門 - Gitの仕組みを速攻で理解する
・コマンドの説明とか。順番適当。
git初期化
git init
remoteのURLをoriginという名前で設定
git remote add origin hogehogeURL
remoteのoriginのURLを変更
git remote set-url origin hogehogeURL
hogeファイルを「コミットするリスト」に追加する。git add -i で対話で「コミットするリスト」を編集できる。
hogeを「.」にすればカレントディレクトリの中身すべて追加できる。
git add hoge
「コミットするリスト」の内容をhogehogeというコメントを付けてローカルの今いるブランチにコミットする。
git commit -m "hogehoge"
ローカルのmasterブランチをリモートリポジトリにマージする。
git push origin master
ここでの「origin master」は「origin/master」とは別物。origin/masterはローカルにあるリモート追跡用リポジトリのこと。
「git push origin master」はどういうことをしているかというと、origin(=リモートリポジトリ)に「ローカルのmasterブランチ」をpushするということ。
ここで大事なのはこの「git push origin master」のmasterはソース元(この場合はローカルのmasterブランチ)を指していること。
つまり、「git push origin hoge」としたときにリモートリポジトリにhogeブランチが存在しない場合、リモートリポジトリに新しくhogeブランチが作られる。
ほんとにぃ?じゃあ現在のブランチがmasterブランチの時に、「git push origin hoge」したらリモートにはローカルのhogeブランチがmergeされるの?⇒されたわ。
- Git超入門:"git push origin master"の"push"と"origin"と"master"の意味がわからないあなたへ · DQNEO起業日記
- 【Git基礎】git push origin masterのmasterはローカル/リモートどっちのこと? - Qiita
ブランチの一覧を表示して今どのブランチなのかを確認する。
git branch
現在のブランチからhogeという名前でブランチを切る(ブランチの切り替えはされない。)
git branch hoge
hogeブランチに切り換える。ワーキングディレクトリの内容がhogeブランチの内容に更新されます。
git checkout hoge
現在のブランチにhogeのブランチを取り込みます。
git merge hoge
hogeブランチを削除する。mergeした後に必要なくなったブランチを削除するなどに。
git branch -d hoge
あるコミットまで状態を戻す。あるコミット以降のコミットはなかったことになる。(コミットが削除される)
gitでは空のディレクトリは無視されてしまう。.gitignoreか.gitkeepを使おう。
- .gitignore の書き方 - Qiita
- 空のディレクトリを維持するための、 .gitkeep と .gitignore の使い分け - Qiita
- [Git] .gitignoreの仕様詳解 - Qiita
pull = fech + merge ?
- 【古い情報です】 pull は本当に fetch + merge なの? - Qiita
- git fetchの理解からgit mergeとpullの役割 - Qiita
- 【Git】fetch / merge / pull の違いと強制的にmergeする方法について - haruakinosuke's blog
- gitの管理対象から特定のファイル、ディレクトリを削除する - Qiita
- gitの管理下にあるディレクトリ一覧を取得する - Qiita
- Gitのリモートブランチを削除するまとめ - Qiita
- リモートリポジトリの確認・編集・削除 - Qiita
エラー
- 初めてGitHubリポジトリにpushしたらrejectedエラーになったときの対応メモ - Qiita
- 【開発環境】GitHubへのpushが「fetch first」と表示されてrejectedとなったときの対処 - 映画と旅行とエンジニア
- https://blog.otsukasatoshi.com/entry/2017/07/18/070000
以前のコミットに戻したい時
gitの設定色々
submoduleとsubtree
- git submodule の使い方まとめ - u16suzuの blog
- git submodule と git subtree から見る外部リポジトリの取り扱い - tech.guitarrapc.cóm
- git-submodule と git-subtree - Qiita
- Gitのサブモジュール機能を使ってプロジェクトを管理してみよう | vdeep
- gitで外部moduleを扱う方法(subtree) - Qiita
- git-subtree移行メモ - Qiita
適切なコミットの粒度
コミットメッセージ