git初心者のメモ

Git初心者が使ってみた際のメモです。
個人用テキストメモをそのまま貼り付けているため、書いた本人以外には分かりづらいと思いますので、詳細については本文中の各urlのページを参考にしてください。

```
git note.txt
(OS:Windows7.32bit)

--------------------------------------------------
「そもそもGitって何？」、「GitとGitHubは何が違うの？」にシンプルに答えるよ
https://blog.sixapart.jp/2014-03/mttips-02-what-is-git.html


--------------------------------------------------
--------------------------------------------------
サルでもわかるGit入門
http://www.backlog.jp/git-guide/

#はじめに
- Gitとは… 分散型バージョン管理システム
ファイルの状態を好きなときに更新履歴として保存できる

#履歴を管理するリポジトリ

- リポジトリ… ファイルやディレクトリの状態を管理する場所
保存された状態は変更履歴として格納される
管理したいディレクトリをリポジトリの管理下におくことで変更履歴を記録

- リモートリポジトリとローカルリポジトリ

* Gitのリポジトリは2種類

- リモートリポジトリ
専用のサーバに配置して複数人で共有するためのリポジトリ

- ローカルリポジトリ
ユーザー一人ひとりが利用するために、自分の手元マシン上に配置するリポジトリ

これらを使い分けることで、普段の作業はローカルで行える
ローカルをリモートリポジトリにアップして公開、
リモートリポジトリを通じて他の共同作業者の作業内容を取得できる

* リポジトリの作成

ローカルリポジトリ作成方法は二種類
- 全く新しいリポジトリを作成する方法
- リモートリポジトリをコピーし作成する方法


# 変更を記録するコミット
ファイル・ディレクトリの追加・変更をリポジトリに記録するにはコミット操作

コミット… 前回コミット状態から現在状態までの差分を記録したコミット（またはリビジョン）が作成される
時系列順に状態が記録されるため、過去の更新履歴・内容を知ることが出来る
コミットには自動で重複のない英数字40桁の名前が付けられ、名前を使ってコミットを指定できる

※バグ修正や機能追加など違う内容の変更を行う場合は極力分けてコミットするといい

コミット実行時にはメッセージ入力が必要
空のままで実行するとコミット失敗となる

-----
1行目：込みとでの変更内容の要約
2行目：空行
3行目以降：変更した理由
-----
という形式でコメントを書く


# ワークツリーとインデックス

ワークツリー… Git管理下に置かれた、各々が作業しているディレクトリ
インデックス… リポジトリとワークツリーの間にあり、コミットする準備をするための場所

コミット実行したと時は必ずインデックスを経由するため、
コミットでファイル状態を記録するには、
まずインデックスにファイル登録する必要がある

------
# Gitのインストール

ここでは　TortoiseGit（トータスギット） を使う
https://tortoisegit.org/

コレを利用するには、先にmsysgit（エムシスギット）をインストールする必要がる
https://git-for-windows.github.io/

DLしたインストーラーを使用してインストール
※全部インストールしたら再起動すること（再起動しないとアイコンが反映されない）


* 初期設定

デスクトップ等適当な場所で右クリックメニュー>TorotiseGit>設定
名前とメールアドレスを設定してOK



* 新しいリポジトリを作成する

任意のディレクトリで右クリック>Gitここにリポジトリを作成


# ファイルをコミットする
http://www.backlog.jp/git-guide/intro/intro2_4.html


# リモートリポジトリにプッシュする
http://www.backlog.jp/git-guide/intro/intro3_1.html

Push… リモートリポジトリでローカルリポジトリの変更履歴を共有するには、
ローカルリポジトリ内の変更履歴をアップロードする必要があり、
そのための操作をプッシュをいう

プッシュを行うと変更履歴がリモートリポジトリにアップロードされて
ローカルリポジトリの変更履歴と同じ状態となる


# リモートリポジトリをクローンする
http://www.backlog.jp/git-guide/intro/intro3_2.html

Clone… 他の誰かの変更履歴がリモートリポジトリにあった際、
クローン操作してローカルリポジトリとして複製


# リモートリポジトリからプルする
http://www.backlog.jp/git-guide/intro/intro3_3.html

リモートリポジトリを共有し複数人で作業すると、それぞれがプッシュすることとなる。
その際、他作業者のプッシュした変更内容を自分のローカルリポジトリに取り込む必要がある。

* Pull… リモートリポジトリからローカルリポジトリを更新する
実行するとリモートリポジトリから最新の変更履歴をDLして自分のローカルリポジトリにその内容を取り込む。



# リモートリポジトリをBacklog（バックログ）上に作成する

http://www.backlog.jp/license/
※無料お試し登録
お試し期間経過後、正式申込の無い場合は1ヶ月程度でアカウントが削除される場合がある

スペースID:
ユーザー名:
パスワード:
メルアド:

※Backlogでは管理者権限ユーザでないとGitリポジトリが作成できない


登録後ログインしたら、プロジェクトの追加でプロジェクトを作成
プロジェクト名:
プロジェクトキー:

プロジェクトができたら、メニューのGitタブから設定画面を開き、
「このプロジェクトでGitを使う」をクリック
その後、「リポジトリを追加」クリック

リポジトリ名等を設定


# リモートリポジトリにプッシュする
http://www.backlog.jp/git-guide/intro/intro4_2.html

# リモートリポジトリをクローンする
http://www.backlog.jp/git-guide/intro/intro4_3.html

# クローンしたリポジトリからプッシュする
http://www.backlog.jp/git-guide/intro/intro4_4.html

# リモートリポジトリからプルする
http://www.backlog.jp/git-guide/intro/intro4_5.html

----------

# 変更履歴のマージ
http://www.backlog.jp/git-guide/intro/intro5_1.html

自分がpull実行後、pushするまでの間に
田作業者がpushでリモートリポジトリ更新した場合は
自分のpushは拒否される。

その場合、マージを行って履歴変更を取り込むまで自分のpush拒否される。

マージ… Gitが変更箇所を自動的に統合する。
ただし、自動統合できない場合もあり、その際は手動統合する。


# 競合の解決
http://www.backlog.jp/git-guide/intro/intro5_2.html

リモートリポジトリとローカルリポジトリで
ファイル内の同じ箇所を変更していた場合、エラーとなり
マージによる自動統合がエラーとなる。

競合発生箇所は、Gitがファイル内に記述するため、
該当箇所を手動で修正する必要がある。


# 競合状態でpushする
http://www.backlog.jp/git-guide/intro/intro6_1.html


# 競合を解決する
http://www.backlog.jp/git-guide/intro/intro6_2.html



----------
■まとめ

*リポジトリ… ファイルやディレクトリの状態を管理する場所、保存された状態は変更履歴として格納される

*リモートリポジトリ… 専用のサーバに配置して複数人で共有するためのリポジトリ

*ローカルリポジトリ… ユーザー一人ひとりが利用するために、自分の手元マシン上に配置するリポジトリ

*コミット… 前回コミット状態から現在状態までの差分を記録、時系列順に記録され過去の更新履歴・内容を知ることが出来る（コミット実行時メッセージ入力必須）

*ワークツリー… Git管理下に置かれた、各々が作業しているディレクトリ

*インデックス… リポジトリとワークツリーの間にあり、コミットする準備をするための場所

*Push… リモートリポジトリでローカルリポジトリの変更履歴を共有するには、ローカルリポジトリ内の変更履歴をアップロードするための操作

*Clone… 他の誰かの変更履歴がリモートリポジトリにあった際、クローン操作してローカルリポジトリとして複製

*Pull… リモートリポジトリから最新の変更履歴をDLして自分のローカルリポジトリにその内容を取り込み更新する

*マージ… Gitが変更箇所を自動的に統合する。競合がある場合はエラーとなり手動統合する必要がある。


--------------------------------------------------
--------------------------------------------------
--------------------------------------------------

はじめてのバージョン管理システム　Git　第１回
http://homework.hatenablog.jp/entry/2016/10/17/171415

Git… バージョン管理システム
*変更を変更履歴に記録しやすい
*変更履歴から変更を調べやすい
*誤って他作業者変更の上書きトラブルを回避


TortoiseGit　Windows（64bit）にTortoiseGitをインストールする　第２回
http://homework.hatenablog.jp/entry/2016/10/19/231813

手順に従ってインストール


TortoiseGit　ローカルマシン上の作業フォルダの変更履歴を管理する　第３回
http://homework.hatenablog.jp/entry/2016/10/21/000308


#リポジトリ作成

*リポジトリ… 変更履歴を保管する場所
作業フォルダの新規作成時のみリポジトリを作成

- 任意の作業フォルダ『右クリック>Gitここにリポジトリを作成』
- [Bareを生成]チェックせずに[OK]クリック
- リポジトリ作成完了時、フォルダアイコンに緑のチェック印が付く


#変更を変更履歴に記録

*コミット… 変更を変更履歴に記録すること

- 作業フォルダでファイルを編集/変更し保存
- 作業フォルダ『右クリック>Gitコミット』でコミット画面を表示
- 「メッセージ」欄に変更内容等、記録する内容（ファイル編集/変更内容等）入力
- 「変更した項目」には前回コミットから変更箇所のあるファイルが表示されるので、記録するファイルをチェックし選択
- [OK]クリック。変更が記録されると成功が表示される

*表示されるアイコン
- 緑チェック… 変更履歴に記録済
- 赤！… 変更履歴に記録できていない変更有
- 青？… 管理対象に追加できていない


#変更履歴を見る

作業フォルダ内階層「右クリック>TortoiseGit>ログを表示」でログ画面表示

*リビジョン… 前回コミットからの差分

*ログ画面
-1段目… リビジョン一覧
-2段目… メッセージ
-3段目… 変更した項目一覧

*リビジョン一覧
-[アクション][メッセージ][作者][日時]が一覧表示される
-アクションには「追加」「変更」など印が表示される
-メッセージにはコミット時入力したメッセージが表示される
-作業フォルダを「ワーキングツリー」と言い、「Working tree changes」は作業フォルダの変更のこと
-「master」は作業フォルダの変更履歴のこと

*変更した項目一覧
-1段目リビジョン一覧で選択した項目の変更ファイルが3段目の一覧に表示される
-パス、拡張子、状態、追加した行（行数）、削除した行（行数）が一覧に表示される
-パスに表示されてる項目をダブルクリックすると「TortoiseGitMerge」画面に表示され変更内容を確認できる
-TortoiseGitMerge画面には前回コミット時の内容と今回コミット内容が左右に表示され差分には色が付く


TortoiseGit　共有ファイルの変更履歴を管理する　第４回
http://homework.hatenablog.jp/entry/2016/10/27/220231


TortoiseGit　ブランチを使って効率的に変更作業を行う　第５回
http://homework.hatenablog.jp/entry/2016/11/02/171540


#ブランチとは

*ブランチ… ひと続きの変更履歴。初期はmasterブランチ。
主軸変更履歴から枝分かれさせ別の変更履歴（ブランチ）を作成できる。


#ブランチの作成

-作業フォルダ右クリック[TortoiseGit]>[ブランチの作成]
-「ブランチの作成」画面で「名前」の「ブランチ」にブランチ名を入力
-「基点」に祝辞となる変更履歴のどこから枝分かれさせるのかを入力
-[OK]をクリック

```