Gitに関して

【Git】ファイルの変更履歴を記録できるバージョン管理システム

【GitHub】Gitを使って、コード管理するためのWebサービス
 ・自分でかいたコードを提案できる
 ・お互いのコードをし合える
 ・メンバーの意見を取り入れプロダクトをブラッシュアップできる
 ・ホスティングサービス

【SourceTree】GUIで操作するソフトウェア
  ・GitHub for Windowsと同じ用途で使われるソフトウェア
   詳細は、下記にも記載する

バージョン管理システム

 作成、更新、削除のたびに記録を付けられて、その記録を参照して、戻ったりできるもの。記録には、コメントを付けることができる。
 ・Git以外にも、Subversionというバージョン管理システムがある
  Subversionを使うツールが『TortoiseSVN』

GitHubとBitbucketの使い分けをするなら

公開リポジトリを無料でできるのが、GitHub
非公開リポジトリを無料でできるのが、BitBucket(※共同開発は、5人まで)

SourceTreeについて

GUIでGitの操作するツール
 ・日本語対応
 ・無料
 ・BitbucketやGitHubと連携可能
 ・Atlassianが出している製品

Atlassianについて

BitBucketやSourceTreeを開発した会社
ライセンスを認証するためにログインすることがある

【リポジトリ】
【コミット】ソースを情報をアカウント上に登録すること
【プッシュ】リモートリポジトリにデータを格納すること
      アップロードみたいな

分散型と集中型

【集中型バージョン管理システム】1つのリポジトリに接続して、すべての人が使う
  CVS
  Subversion
【分散型バージョン管理システム】各自、パソコン上にリポジトリを持ち、好きなタイミングで同期する
  Git
  Mercurial
中央リポジトリは、リポジトリをホスティングサービス上に公開して使うこと。クローンして作業すること。

よくよくかんがえると、SVNはGitHubみたいなサービスがないことを考えるとなんとなく想像がつくかなー

【フォーク】他人が公開しているリモートリポジトリを自分のアカウント上にコピーして持ってくること
【クローン】自分のアカウント上にあるもの(リモートリポジトリ)を自分のパソコンに移すこと

【ブランチ】枝分かれ。記録するときに区分を作って、使い分けることができるもの。使い方としては、masterブランチがあるが、そのプログラムの基盤部分に宛てられている。区分に名前を付けられる。
【チェックアウト】ブランチを移動するときに使うこと

【マージ】特定のブランチに統合すること
【プル】他者がプッシュしたデータをプルすることで取り込めること

【コンフリクト(衝突)】マージするときに同じ行修正した場合、どっちにマージすればいいかを困っている状態。競合している状態。
SVNと違って、行はぶつかると起きるが、同じソース上は起こらない。

コンプリフトが起きた場合、警告マークが表示され、中身を見ると差分が表示される

【プルリクエスト】プルしてもらうために申請するもの
別ブランチであるシステムの機能を開発している場合にプルリクエストを送って、プルしてもらい、プルした人(システム開発の管理者)がマージして開発する流れ。

プルリクエストの修正
 GitHub上で修正可能

【.gitignore】Gitの設定ファイル

#自分用のメモファイルを無視する
memo.txt

#.rbcという拡張子がついているファイルが無視される
*.rbc

#例外として、test.rbcは無視されない
!test.rbc

#templates_cというディレクトリ以下が無視される
template_c/

#ルートディレクトリにあるlogというディレクトリ以下が無視される /log/

#行頭に#を入力するとコメントかける

過去に戻って新規ブランチを作成、作業やり直したい

チェックアウトしてから、ブランチを生やす

過去のコミットを打ち消したい

リバートする
【リバート】過去のコミットと逆の内容を新規にコミットすることで、安全に打ち消すことができる

履歴を一直線にしたい

【リベース】履歴を一直線にする※履歴を改変するので、注意が必要

コミットを一つにまとめる

【スカッシュ】コミットを一つにまとめること
インタラクティブリベースモードにしてスカッシュする
※すでにリモートリポジトリ上に存在するコミットは、インタラクティブリベースしないように注意する。

リモート追跡ブランチ

【リモートブランチ】リモートリポジトリの中にある
【リモート追跡ブランチ】
 ・ローカルリポジトリの中にある
 ・リモートブランチをローカルにミラーリング(コピー)しただけのもの
 ・読み取り専用
【ローカルブランチ】
 ・ローカルリポジトリの中にある
 ・普段コミットするブランチ

フェッチ

リモートリポジトリから更新内容をダウンロードして、ローカルリポジトリ内のリモート追跡ブランチ(origin/〇〇)を更新する
 ・マージすることで、はじめてローカルブランチが更新される
 ※フェッチとマージを合わせた機能がプル

不要になったリモートブランチを削除したい

1、削除したい特定のリモート追跡ブランチを削除
2、プッシュして、リモートブランチ削除
3、同じ特定のローカルブランチを削除

他者がリモートリポジトリを削除した場合
1、フェッチするときに、「リモートで消えた追跡ブランチを削除」のチャックボックスをチェックし、OKボタンを押下
 ※リモートブランチとリモート追跡ブランチが削除される
2、ローカルブランチを削除

コミット内容を修正する

1、コミットアイコンをクリックし、『オプションのコミット』をドロップダウンの「最後のコミットを上書き」を選択する
2、確認ダイアログが表示されるので、「Yes」を押下する
3、修正内容を入力し、コミットボタンを押下

未コミットのファイルを一時退避する

【スタッシュ】未コミットのファイルを一時退避できる
前提、コミットしてない状態で、最後のコミットに変更がある状態
1、スタッシュアイコンを押下
2、任意の名前を付けて、「OK」ボタンを押下
左のメニュー部分にスタッシュ項目があり、そこに追加される

スタッシュしたファイルを復元
1、右クリックで、適用を選択
2、確認ダイアログのOKを押下
復元された

別ブランチから特定のコミットのみを取り込みたい

【チェリーピック】特定のブランチにコミットした内容を今いるブランチ上にコピーすること

不要になったコミットを削除
リバートすればいい

コミットにタグをつける

【タグ】履歴上の重要なポイントに目印をつけることができる
 (使用用途)
  ・アプリ開発で、リリースしたときにバージョン番号にタグをつける
  ・受諾開発で、納品したときに日付のタグをつける(2019-12-08)
  ・Web開発で、リニューアルオープンしたときにタグをつける

手順
1、タグつけたいコミットを右クリックし、「タグ」を選択
2、タグ名入力、「タグを追加」押下

タグを削除する
1、左のメニュー部分に、先ほどのタグが追加されているので、右クリックで削除

過去のブランチにチェックアウトした後、そのまま新しくコミットしたらHEADって目印が表示された

【detached HEAD状態】HEADって表示される。

画像1

上図でmasterに戻ると、detached HEAD状態でコミットしたコミット情報が消えている

上記の状態になったら、新規ブランチを作成する
例えば、new_branchで作成すると

画像2

HEADが表示されなくなる

要約すると
 detached HEAD状態でコミットしない
 detached HEAD状態でコミットした場合は、新規ブランチ作る

その他

・GitHub上で、静的なWebページを公開できる


感想

バージョン管理ツールは、今までSVNしか使ってこなかったのですが、様々な人と共同開発するときは、間違いなくGitを使った方がいいって思えるようになりました。
SVNでは、ローカルに持ってきてとなんらかの方法で伝えないと、持ってこれませんが、プルしてくださいと発信できるのはすごいと思いました。
またブランチで用途に合わせて作業できるのは、やりやすいと感じました。
コンフリクトの判定が行単位なので、それも強いです。

これが主流になっている理由がわかってすっきりしました。

この記事が気に入ったらサポートをしてみませんか?