Gitの基本
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>Git]]
--Gitの基本
--[[Gitコマンド]]
--[[インストール>Git#f825d4d1]]
*目次 [#x8384c78]
#contents
*概要 [#m3065cef]
技術解説の意味が解らんかったので、やっぱ基本は大事。
**用語集 [#x188d216]
***基本概念 [#mc1ede4f]
|リポジトリ(Repository)|Gitで管理されるプロジェクトのデ...
|ワーキングツリー(Working Tree)|実際に作業を行うディレ...
|インデックス(Index, Staging Area)|git add で追加された...
|HEAD|現在チェックアウトされているブランチの最新のコミッ...
-リポジトリ(Repository)~
http://www.backlog.jp/git-guide/intro/intro1_2.html
--ファイルやディレクトリの変更履歴を記録して管理する場所。
--管理対象のファイルやディレクトリはrepositoryの下に置く。
--local / remote~
http://www.backlog.jp/git-guide/intro/intro1_3.html
---remote repository~
サーバに配置して複数人で共有するためのrepository。
---local repository~
・ユーザ一人が利用する、自分の手元のマシン上に配置するrep...
・local repositoryの内容はremote repositoryを経由して公開...
--bare / non-bare~
http://www.nekotricolor.com/entry/theory-of-bare-and-non-...
---non-bare repository~
ワーキングディレクトリを持つ。
---bare repository~
ワーキングディレクトリを持たない。更新情報だけを持ってい...
***ブランチとコミット関連 [#bcb51a2a]
|ブランチ(Branch)|コミットの履歴を分岐させる機能。開発...
|コミット(Commit)|インデックスに追加された変更を記録す...
|マージ(Merge)|異なるブランチの変更を統合する操作。|
|リベース(Rebase)|ブランチの基点を変更し、履歴を整理す...
|チェリーピック(Cherry-pick)|特定のコミットのみを別のブ...
|タグ(Tag)|特定のコミットに名前を付ける機能。リリースバ...
-branch~
http://www.backlog.jp/git-guide/stepup/stepup1_1.html
--branchは独立な開発ラインを意味する。
---開発ラインは、ブランチの上にcommit(編集 / ステージ / ...
---branchの開発ラインとは一連のcommit履歴を指す抽象概念
--branch名
--- (remote)/(branch)~
remoteのrepositoryのbranch
--- (origin)/(branch)~
cloneしたremoteのrepositoryのbranch
--HEAD:現在使用しているbranchの先頭を表す名前
--stash:ファイルの変更内容を一時的に記録しておく領域。
***リモートリポジトリ関連 [#v8ec0fa3]
|リモート(Remote)|ネットワーク上にあるリポジトリ。GitHu...
|フェッチ(Fetch)|リモートリポジトリの最新の変更を取得す...
|プル(Pull)|fetch + merge を行い、リモートの変更をロー...
|プッシュ(Push)|ローカルリポジトリの変更をリモートリポ...
|クローン(Clone)|リモートリポジトリをローカルに複製する...
***履歴管理とトラブルシューティング [#q22d6185]
|ログ(Log)|git log で過去のコミット履歴を表示するコマン...
|リセット(Reset)|コミットの状態を過去の状態に戻す操作。...
|リバート(Revert)|既存のコミットを打ち消す新しいコミッ...
|ステータス(Status)|git status で作業ツリーの状態を確認...
|ディフ(Diff)|git diff で変更点を比較するコマンド。|
|スタッシュ(Stash)|作業中の変更を一時的に退避する機能。...
**基本操作 [#n75d0f80]
***ほとんど全ての操作がローカル [#vdc76de5]
-分散バージョン管理システム (DVCS) として設計されているの...
--ローカルだけで作業できる(ローカルの作成にリモートが必...
--後に要所・要所でローカルで作業してリモートと同期する。
-従って、オフラインでの作業が可能。
***チェックサムde完全性 [#h4483af8]
Gitでは、すべてのオブジェクト(ファイル、ディレクトリ、コ...
***コミットはスナップショット [#o83a3a0d]
Gitのコミットはスナップショットで、差分ではない?
-他のVCS (CVS、Subversionとその類を含む)は差分
--各コミットでは、ファイルの変更点 (diff) のみ記録する方式
--履歴を取得する際には前のバージョンから順番に差分を適用...
-Gitはファイルのスナップショット
--各コミットで全体のスナップショットを保存(変更ファイルの...
--差分自体ではないが、内部的には効率的に差分を管理する仕...
--また、変更のないファイルについては前回のバージョンへの...
--過去のバージョンの取得やブランチの切り替えが高速になる...
これにより、過去のバージョンの取得やブランチの切り替えが...
***ブランチの統合はマージ&コミット [#h73ca59d]
-ブランチの統合はファイル間の差異をそれぞれマージしてコミ...
-マージでは、コンフリクトが無ければ自動的に行われる。マー...
-この際、2つの分岐をマージした結果のコミットを特別にマー...
-なお、ブランチしたが実際には分岐していない場合はマージコ...
-従ってGitHub
--分散開発が可能な仕組みとなっている。
--デメリットとしてコンフリクトが発生し得る。
--コンフリクトは手動でマージして解決する必要がある。
***プル、プッシュ、プルリクエスト [#eaa84960]
-Gitにはローカルブランチとリモートブランチがある。
--ローカルブランチ:~
開発者のPC上に存在する作業用ブランチ、直接編集可能。
--リモートブランチ:
---サーバー上に存在するチーム共有ブランチ、直接編集不可能。
---直接編集ではなくローカルからリモートに変更をプッシュし...
-リモートをローカルにクローン
--先ず、リモートのリポジトリをローカルにクローンする。
--リポジトリの変更履歴として、1~複数のブランチが含まれ...
--ココではブランチにはMasterとMasterから分岐したFeatureが...
-ローカルブランチでリモートブランチをプルし(最新の変更を...
--ローカルブランチでは、Featureブランチに対して開発を行う。
--プル=フェッチ+マージで、リモート、ローカルのブランチ...
--マージは既出で、フェッチとは、マージ前に変更を取得する...
-ローカルブランチの変更をリモートブランチへプッシュ
--プッシュはクローンの逆でローカルの変更履歴をリモートに...
--Masterをプッシュするか?Featureをプッシュするかでシナリ...
--(Master →(プッシュ)→ Master)(Feature →(プッシュ)...
--ローカルでマージ(した場合、Masterをプッシュ
---ローカルでブランチをマージ(Feature →(マージ)→ Maste...
---Masterブランチをプッシュすればそれで完了する。
--リモートでマージ(する場合、Featureをプッシュ
---Featureをプッシュしプルリクエストを送る~
---プルリクエストはGitではなく[[Git]]ホスティングサービス...
---コレでリモートのMasterにFeatureの変更の取り込みを要求...
---プルリクエストは、リモートでプル(ではなくマージ)をリ...
---コレによりリモートでブランチをマージする(Feature →(...
***変更履歴の有向非巡回グラフ [#y3400fa6]
-Gitのグラフとは、変更履歴を表す有向非巡回グラフ
-グラフは、各コミットがノードとなり、親コミットへの参照(...
-変更履歴には単純な「コミット」や「分岐(ブランチ)」を「...
*仕組み [#iedd287e]
**三つの状態 [#j9a79c9d]
-修正済、ステージ済、コミット済
-スナップショットはコミット時にのみ作成される。
***修正済 [#pdc7d5e9]
ファイルに変更を加えたが、databaseにそれがまだコミットさ...
***ステージ済 [#gdc88fb7]
次のスナップショットのコミットに加えるために、~
現在のバージョンの修正されたファイルに印をつけている状態。
***コミット済 [#ic8b49df]
local databaseにデータが安全に格納されている状態
**ファイルの状態 [#i079ab3a]
git status でファイルの状態を確認できる。
***gitに認識されているか、いないか? [#m9c41e5b]
-追跡されている (tracked)
-追跡されてない (untraced)
***追跡されているファイルの3つの状態 [#udfdaa31]
-変更されていない (unmodified)
-変更されている (modified)
-ステージされている (staged)
**Gitプロジェクト(ディレクトリ内) [#occ5963b]
***Gitディレクトリ [#tbfe0b23]
プロジェクトのためのメタデータとオブジェクトのdatabaseが...
***作業ディレクトリ [#k8251daa]
プロジェクトの一つのバージョンの単一checkout
***ステージング・エリア [#dc4745ec]
-インデックス or ステージング・エリア と呼ばれる。
-次のコミットに何が含まれるかに関しての情報を蓄えた一つの...
-git addでファイルをステージング・エリアに追加できる。
*参考 [#kad973f9]
-Git の仕組みを5分で理解する! - Qiita~
http://qiita.com/hshimo/items/ab91b99cd61724127aa7
-サルでもわかるGit入門~
〜バージョン管理を使いこなそう〜~
どこでもプロジェクト管理バックログ~
http://www.backlog.jp/git-guide/
-Git のコマンドだけでなく、その仕組みを学ぶ~
https://www.ibm.com/developerworks/jp/devops/library/d-le...
-Git の基本 | アトラシアン Git チュートリアル~
https://www.atlassian.com/ja/git/tutorial/git-basics
**@IT [#da47ce70]
-こっそり始めるGit/GitHub超入門~
http://www.atmarkit.co.jp/ait/series/3190/
--(1):初心者でもWindowsやMacでできる、Gitのインストー...
http://www.atmarkit.co.jp/ait/articles/1603/31/news026.html
--(2):“はじめのGit”――超基本的な作業フローと5つのコマン...
http://www.atmarkit.co.jp/ait/articles/1604/26/news019.html
--(3):ポインタ嫌いでも分かるGitブランチの基本――作成、...
http://www.atmarkit.co.jp/ait/articles/1606/10/news022.html
--(4):Gitでコンフリクトしても慌てるな!! 解消に向けた3...
http://www.atmarkit.co.jp/ait/articles/1607/14/news020.html
--(5):Gitコミット現場あるある――やり直し、取り消し、変...
http://www.atmarkit.co.jp/ait/articles/1608/27/news008.html
--(6):「softでもhardでもHEADとブランチを付けたまま」――...
http://www.atmarkit.co.jp/ait/articles/1610/27/news016.html
--(7):はじまりはいつもプルリク? Gitリポジトリホスティ...
http://www.atmarkit.co.jp/ait/articles/1612/05/news022.html
--(8):2017年、GitHubを始めるために最低限知っておきたい...
http://www.atmarkit.co.jp/ait/articles/1701/05/news009.html
--(9):これでもう怖くない、Git/GitHubにおけるリモート...
http://www.atmarkit.co.jp/ait/articles/1701/24/news141.html
--(10):GitHubを使うなら最低限知っておきたい、プルリク...
http://www.atmarkit.co.jp/ait/articles/1702/27/news022.html
--(11):開発者のタスク管理がしやすくなるGitHub Issuesの...
http://www.atmarkit.co.jp/ait/articles/1703/29/news021.html
--(12):開発者のスケジュール管理に超便利、GitHub Issues...
http://www.atmarkit.co.jp/ait/articles/1704/28/news032.html
--(13):GitHubとSlackの連携の基本&知られざる便利機能Wi...
http://www.atmarkit.co.jp/ait/articles/1705/29/news027.html
--(14):たった3つで共存できる、Git/GitHubとSubversion...
http://www.atmarkit.co.jp/ait/articles/1707/03/news024.html
--(終):【図解】git-flow、GitHub Flowを開発現場で使い始...
http://www.atmarkit.co.jp/ait/articles/1708/01/news015.html
**git-scm.com [#u0c6b731]
-Git - Documentation~
https://git-scm.com/doc
-Git 使い始める
--1.1 バージョン管理に関して~
https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8...
--1.2 Git - Git略史~
https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8...
--1.3 Gitの基本~
https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8...
**リファレンス [#k49606b2]
-Git - Documentation~
https://git-scm.com/doc
-transitive.info - Home~
http://transitive.info/
**[[Gitコマンド]] [#wd19dfed]
-[[rebase]]
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>Git]]
--Gitの基本
--[[Gitコマンド]]
--[[インストール>Git#f825d4d1]]
*目次 [#x8384c78]
#contents
*概要 [#m3065cef]
技術解説の意味が解らんかったので、やっぱ基本は大事。
**用語集 [#x188d216]
***基本概念 [#mc1ede4f]
|リポジトリ(Repository)|Gitで管理されるプロジェクトのデ...
|ワーキングツリー(Working Tree)|実際に作業を行うディレ...
|インデックス(Index, Staging Area)|git add で追加された...
|HEAD|現在チェックアウトされているブランチの最新のコミッ...
-リポジトリ(Repository)~
http://www.backlog.jp/git-guide/intro/intro1_2.html
--ファイルやディレクトリの変更履歴を記録して管理する場所。
--管理対象のファイルやディレクトリはrepositoryの下に置く。
--local / remote~
http://www.backlog.jp/git-guide/intro/intro1_3.html
---remote repository~
サーバに配置して複数人で共有するためのrepository。
---local repository~
・ユーザ一人が利用する、自分の手元のマシン上に配置するrep...
・local repositoryの内容はremote repositoryを経由して公開...
--bare / non-bare~
http://www.nekotricolor.com/entry/theory-of-bare-and-non-...
---non-bare repository~
ワーキングディレクトリを持つ。
---bare repository~
ワーキングディレクトリを持たない。更新情報だけを持ってい...
***ブランチとコミット関連 [#bcb51a2a]
|ブランチ(Branch)|コミットの履歴を分岐させる機能。開発...
|コミット(Commit)|インデックスに追加された変更を記録す...
|マージ(Merge)|異なるブランチの変更を統合する操作。|
|リベース(Rebase)|ブランチの基点を変更し、履歴を整理す...
|チェリーピック(Cherry-pick)|特定のコミットのみを別のブ...
|タグ(Tag)|特定のコミットに名前を付ける機能。リリースバ...
-branch~
http://www.backlog.jp/git-guide/stepup/stepup1_1.html
--branchは独立な開発ラインを意味する。
---開発ラインは、ブランチの上にcommit(編集 / ステージ / ...
---branchの開発ラインとは一連のcommit履歴を指す抽象概念
--branch名
--- (remote)/(branch)~
remoteのrepositoryのbranch
--- (origin)/(branch)~
cloneしたremoteのrepositoryのbranch
--HEAD:現在使用しているbranchの先頭を表す名前
--stash:ファイルの変更内容を一時的に記録しておく領域。
***リモートリポジトリ関連 [#v8ec0fa3]
|リモート(Remote)|ネットワーク上にあるリポジトリ。GitHu...
|フェッチ(Fetch)|リモートリポジトリの最新の変更を取得す...
|プル(Pull)|fetch + merge を行い、リモートの変更をロー...
|プッシュ(Push)|ローカルリポジトリの変更をリモートリポ...
|クローン(Clone)|リモートリポジトリをローカルに複製する...
***履歴管理とトラブルシューティング [#q22d6185]
|ログ(Log)|git log で過去のコミット履歴を表示するコマン...
|リセット(Reset)|コミットの状態を過去の状態に戻す操作。...
|リバート(Revert)|既存のコミットを打ち消す新しいコミッ...
|ステータス(Status)|git status で作業ツリーの状態を確認...
|ディフ(Diff)|git diff で変更点を比較するコマンド。|
|スタッシュ(Stash)|作業中の変更を一時的に退避する機能。...
**基本操作 [#n75d0f80]
***ほとんど全ての操作がローカル [#vdc76de5]
-分散バージョン管理システム (DVCS) として設計されているの...
--ローカルだけで作業できる(ローカルの作成にリモートが必...
--後に要所・要所でローカルで作業してリモートと同期する。
-従って、オフラインでの作業が可能。
***チェックサムde完全性 [#h4483af8]
Gitでは、すべてのオブジェクト(ファイル、ディレクトリ、コ...
***コミットはスナップショット [#o83a3a0d]
Gitのコミットはスナップショットで、差分ではない?
-他のVCS (CVS、Subversionとその類を含む)は差分
--各コミットでは、ファイルの変更点 (diff) のみ記録する方式
--履歴を取得する際には前のバージョンから順番に差分を適用...
-Gitはファイルのスナップショット
--各コミットで全体のスナップショットを保存(変更ファイルの...
--差分自体ではないが、内部的には効率的に差分を管理する仕...
--また、変更のないファイルについては前回のバージョンへの...
--過去のバージョンの取得やブランチの切り替えが高速になる...
これにより、過去のバージョンの取得やブランチの切り替えが...
***ブランチの統合はマージ&コミット [#h73ca59d]
-ブランチの統合はファイル間の差異をそれぞれマージしてコミ...
-マージでは、コンフリクトが無ければ自動的に行われる。マー...
-この際、2つの分岐をマージした結果のコミットを特別にマー...
-なお、ブランチしたが実際には分岐していない場合はマージコ...
-従ってGitHub
--分散開発が可能な仕組みとなっている。
--デメリットとしてコンフリクトが発生し得る。
--コンフリクトは手動でマージして解決する必要がある。
***プル、プッシュ、プルリクエスト [#eaa84960]
-Gitにはローカルブランチとリモートブランチがある。
--ローカルブランチ:~
開発者のPC上に存在する作業用ブランチ、直接編集可能。
--リモートブランチ:
---サーバー上に存在するチーム共有ブランチ、直接編集不可能。
---直接編集ではなくローカルからリモートに変更をプッシュし...
-リモートをローカルにクローン
--先ず、リモートのリポジトリをローカルにクローンする。
--リポジトリの変更履歴として、1~複数のブランチが含まれ...
--ココではブランチにはMasterとMasterから分岐したFeatureが...
-ローカルブランチでリモートブランチをプルし(最新の変更を...
--ローカルブランチでは、Featureブランチに対して開発を行う。
--プル=フェッチ+マージで、リモート、ローカルのブランチ...
--マージは既出で、フェッチとは、マージ前に変更を取得する...
-ローカルブランチの変更をリモートブランチへプッシュ
--プッシュはクローンの逆でローカルの変更履歴をリモートに...
--Masterをプッシュするか?Featureをプッシュするかでシナリ...
--(Master →(プッシュ)→ Master)(Feature →(プッシュ)...
--ローカルでマージ(した場合、Masterをプッシュ
---ローカルでブランチをマージ(Feature →(マージ)→ Maste...
---Masterブランチをプッシュすればそれで完了する。
--リモートでマージ(する場合、Featureをプッシュ
---Featureをプッシュしプルリクエストを送る~
---プルリクエストはGitではなく[[Git]]ホスティングサービス...
---コレでリモートのMasterにFeatureの変更の取り込みを要求...
---プルリクエストは、リモートでプル(ではなくマージ)をリ...
---コレによりリモートでブランチをマージする(Feature →(...
***変更履歴の有向非巡回グラフ [#y3400fa6]
-Gitのグラフとは、変更履歴を表す有向非巡回グラフ
-グラフは、各コミットがノードとなり、親コミットへの参照(...
-変更履歴には単純な「コミット」や「分岐(ブランチ)」を「...
*仕組み [#iedd287e]
**三つの状態 [#j9a79c9d]
-修正済、ステージ済、コミット済
-スナップショットはコミット時にのみ作成される。
***修正済 [#pdc7d5e9]
ファイルに変更を加えたが、databaseにそれがまだコミットさ...
***ステージ済 [#gdc88fb7]
次のスナップショットのコミットに加えるために、~
現在のバージョンの修正されたファイルに印をつけている状態。
***コミット済 [#ic8b49df]
local databaseにデータが安全に格納されている状態
**ファイルの状態 [#i079ab3a]
git status でファイルの状態を確認できる。
***gitに認識されているか、いないか? [#m9c41e5b]
-追跡されている (tracked)
-追跡されてない (untraced)
***追跡されているファイルの3つの状態 [#udfdaa31]
-変更されていない (unmodified)
-変更されている (modified)
-ステージされている (staged)
**Gitプロジェクト(ディレクトリ内) [#occ5963b]
***Gitディレクトリ [#tbfe0b23]
プロジェクトのためのメタデータとオブジェクトのdatabaseが...
***作業ディレクトリ [#k8251daa]
プロジェクトの一つのバージョンの単一checkout
***ステージング・エリア [#dc4745ec]
-インデックス or ステージング・エリア と呼ばれる。
-次のコミットに何が含まれるかに関しての情報を蓄えた一つの...
-git addでファイルをステージング・エリアに追加できる。
*参考 [#kad973f9]
-Git の仕組みを5分で理解する! - Qiita~
http://qiita.com/hshimo/items/ab91b99cd61724127aa7
-サルでもわかるGit入門~
〜バージョン管理を使いこなそう〜~
どこでもプロジェクト管理バックログ~
http://www.backlog.jp/git-guide/
-Git のコマンドだけでなく、その仕組みを学ぶ~
https://www.ibm.com/developerworks/jp/devops/library/d-le...
-Git の基本 | アトラシアン Git チュートリアル~
https://www.atlassian.com/ja/git/tutorial/git-basics
**@IT [#da47ce70]
-こっそり始めるGit/GitHub超入門~
http://www.atmarkit.co.jp/ait/series/3190/
--(1):初心者でもWindowsやMacでできる、Gitのインストー...
http://www.atmarkit.co.jp/ait/articles/1603/31/news026.html
--(2):“はじめのGit”――超基本的な作業フローと5つのコマン...
http://www.atmarkit.co.jp/ait/articles/1604/26/news019.html
--(3):ポインタ嫌いでも分かるGitブランチの基本――作成、...
http://www.atmarkit.co.jp/ait/articles/1606/10/news022.html
--(4):Gitでコンフリクトしても慌てるな!! 解消に向けた3...
http://www.atmarkit.co.jp/ait/articles/1607/14/news020.html
--(5):Gitコミット現場あるある――やり直し、取り消し、変...
http://www.atmarkit.co.jp/ait/articles/1608/27/news008.html
--(6):「softでもhardでもHEADとブランチを付けたまま」――...
http://www.atmarkit.co.jp/ait/articles/1610/27/news016.html
--(7):はじまりはいつもプルリク? Gitリポジトリホスティ...
http://www.atmarkit.co.jp/ait/articles/1612/05/news022.html
--(8):2017年、GitHubを始めるために最低限知っておきたい...
http://www.atmarkit.co.jp/ait/articles/1701/05/news009.html
--(9):これでもう怖くない、Git/GitHubにおけるリモート...
http://www.atmarkit.co.jp/ait/articles/1701/24/news141.html
--(10):GitHubを使うなら最低限知っておきたい、プルリク...
http://www.atmarkit.co.jp/ait/articles/1702/27/news022.html
--(11):開発者のタスク管理がしやすくなるGitHub Issuesの...
http://www.atmarkit.co.jp/ait/articles/1703/29/news021.html
--(12):開発者のスケジュール管理に超便利、GitHub Issues...
http://www.atmarkit.co.jp/ait/articles/1704/28/news032.html
--(13):GitHubとSlackの連携の基本&知られざる便利機能Wi...
http://www.atmarkit.co.jp/ait/articles/1705/29/news027.html
--(14):たった3つで共存できる、Git/GitHubとSubversion...
http://www.atmarkit.co.jp/ait/articles/1707/03/news024.html
--(終):【図解】git-flow、GitHub Flowを開発現場で使い始...
http://www.atmarkit.co.jp/ait/articles/1708/01/news015.html
**git-scm.com [#u0c6b731]
-Git - Documentation~
https://git-scm.com/doc
-Git 使い始める
--1.1 バージョン管理に関して~
https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8...
--1.2 Git - Git略史~
https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8...
--1.3 Gitの基本~
https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8...
**リファレンス [#k49606b2]
-Git - Documentation~
https://git-scm.com/doc
-transitive.info - Home~
http://transitive.info/
**[[Gitコマンド]] [#wd19dfed]
-[[rebase]]
ページ名: