書籍「いちばんやさしいGit&GitHubの教本」のまとめ。
点数
86点
感想
わかりやすく説明されていて、よく理解できた。
1人や少人数で使うなら、非公開リポジトリを無料で無制限に作成できるBitBacketを使うべきだと思う。
※ 2019年1月にGitHubも無料でプライベートリポジトリを無制限に作れるようになっ た
主な内容
Gitサーバを構築するソフト
GitHubのようなサイトを自分で作るには、Gitサーバ用のソフトが必要。GitLab、GitBucketは無料で利用可能。
GitHub Enterpriseプラン、Bitbucketオンプレミスプラン、は有料。
checkout
checkoutすると、作業ディレクトリの中身が指定したブランチの内容に置き換わる。SourceTreeでは、ブランチ名をダブルクリックするとブランチに移動できる=checkoutしている状態になる
過去のコミットをチェックアウトした後、新しくコミットを作るとHEADという印が現れる。これはdetached HEAD状態であり、どのブランチにも所属しない状態になっている。そのまま突き進むと、他にチェックアウトしたときに戻れなくなってしまう。detached HEAD状態でコミットしてしまったら、新規ブランチを作成すればよい。
forkとcloneの違い
- fork
他人が公開しているリポジトリを自分のアカウントにコピー - clone
リモートリポジトリをローカルにダウンロード
除外するファイルの設定
.gitignoreファイルに記述する。
SourceTreeでは「設定」⇒「詳細」で編集可能。 編集後は.gitignore自身をGitへ追加するとよい。
- ファイル指定
例)memo.txt - ワイルドカード指定
例)*.rbc - 例外指定
!test.rbc - ディレクトリ指定
templates/
/log/
memo.txt
*.rbc
!test.rbc
templates/
/log/
過去のコミットを打ち消す=revert
revert:過去のコミットを削除するわけではなく、反対の内容で新規コミットを造ることで過去の変更を打ち消す
・SourceTreeでの手順
打ち消したいコミットを右クリック⇒「このコミットを打ち消し」
履歴を一直線にする=rebase
rebase:過去のコミットを改変して履歴を一直線にする
※mergeの場合は、mergeするためだけの新しいコミットを作成する(過去は改変しない)
rebaseすると過去のコミットのコミットIDが変ってしまう。リモートリポジトリ上のブランチをrebaseするとpushできなくなってしまうため、基本的にrebaseは使わない方がいい。mergeを使うようにする。
コミットを1つにまとめる=squash
squash:2回、3回と続けたコミットを1つにまとめる
rebaseと同様に過去のコミットを改変してしまうので、push前のコミットだけをsquashするようにする。
※ できればrebase, squashは使わない
リモート追跡ブランチ
ローカルリポジトリの中には、リモートブランチをコピーした読み取り専用のリモート追跡ブランチがある。
SoureTree上では「origin/ブランチ名」で表示される。
- fetch:リモート追跡ブランチにリモートブランチを反映させる
- pull:fetch+merge
fetchしてから、ローカルのmasterブランチをチェックアウトしてorigin/masterブランチをmergeしているのと同じ
直近のコミットメッセージの修正(push前に限る)=amend
amend:最後のコミットを上書き
・SourceTreeでの手順
「コミット」をクリック⇒「オプションのコミット」プルダウンで「最後のコミットを上書き(Amend)」を選択
別ブランチから特定のコミットを取り込む=cherry-pick
cherry-pick:好きなコミットを選んで摘み取る
・SourceTreeでの手順
コミットしたいブランチをチェックアウト⇒取り込みたいコミットを右クリック⇒「チェリーピック」
コメント