「わかばちゃんと学ぶGit使い方入門」の感想・備忘録

スポンサーリンク

書籍「いちばんやさしい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での手順
コミットしたいブランチをチェックアウト⇒取り込みたいコミットを右クリック⇒「チェリーピック」

コメント