ITメモ
Python / パイソン




【Python】「Git」とは

【Python】
「Git」とは




「共同開発」「ファイル管理」「プログラム更新」「バージョンアップ」などの 管理に便利な 「Git」


詳しくは、
下記をご参照ください。



「Git」とは


「Git」は、
「エンジニア」「WEBデザイナー」「ライター」にとって
便利なツールとなる「分散型バージョン管理システム」。


「Git」を活用することで、 業務を効率化させることができる。


「分散型バージョン管理システム」である「Git」は、
「ファイルのバージョン管理」が簡単にできるツール。

「ファイル」を「アップデート」「更新」した際に、
「Git」で管理している場合、
PC上でファイルの編集履歴を管理できる。
編集前のファイルを残したまま、
新しく編集したファイルを保存することができる
便利な機能。
新旧のバージョン管理が簡単。


「プログラマー」にとっては、
「変更」を採用したり、
元に戻したりすることが、
簡単にできるのはありがたい。

不具合が発生した時には、
すぐに、「旧バージョン」に戻せるのは、
かなりのリスク管理になる。

プログラムの変更は、
日常でよくあることなので、
1日ごとに、「日付」「時刻」をつけて、
プログラム内容を保存し、
いつでも戻せるようにしておくと、
とても安心。


Back

「Git」と「Github」の違い


「Git」と「Github」の違いは、
Git 「ファイル」「データ」の編集履歴を
正確に把握できる「バージョン管理システム」。
「新旧」の入れ替えが自由で簡単。
「コマンド操作」の「CUIツール」。
Github 「Git」の仕組みを利用して、
他のユーザーとの共同開発環境を提供している
WEBサービスの名称。
「画像表示」「マウス」などを使用しての
直感的な操作が可能な「GUIツール」。


「Github」は、
クラウド上に、
編集した「コード」「デザイン」「データ」を
「保存」「共有」し、
共同開発をしやすくした「WEBサービス」。
「コマンド操作」ではなく、
「マウス」などを使って、視覚的に簡単に認識し、
操作できる「GUI」で管理されている。


Back

「Git」ができること


「Git」ができることは、
・「古いバージョン」「旧編集内容」に簡単に戻せる
・「新旧ファイル」を「一元管理」
・「編集した履歴」を複数人で共有可能
・「複数人」で行った「修正した内容」を一つに統合できる
などがある。


Back

「Git」で管理できる「ファイル」「データ」


「Git」で管理できる「ファイル」「データ」には、
・プログラムコード
・HTML
・CSS
・テキストデータ
・画像データ
・Excelファイル
などがある。
プログラムコーディングだけでなく、
あらゆる「ファイル」「データ」で、
「Git」は利用できる。


Back

「Git」の「仕様」


「Git」は、
CUIツール
なので、
「コマンド」を入力しての操作となる。

「CUI」は、
「キャラクタベースユーザインタフェース」の略で、
「キーボード」を使用して、「コマンド」を入力することで、
操作を実行するツール。

「マウス」の動きで、「クリック」などをすることで、
直感的に操作できるのは、
「GUIツール」という。 「GUI」は、
「グラフィカルユーザーインターフェース」の略で、
「CUIツール」の対義語。


Back

「Git」の「基本操作」


「Git」での「共同開発」の流れは、
■ 「リモートリポジトリ(サーバー)」から、
「開発データ」を「クローン(コピー・ダウンロード)」する

■ 各ユーザーPCの「ワークツリー(編集ファイル保存場所)」で、
ファイルを編集する

■ 「編集内容」を「インデックス(仮置き場・一時保存)」に保存しながら作業する

■ 「編集作業終了ファイル」を「ローカルリポジトリ(データ復帰可能な日時ごとに管理)」に「コミット(登録)」する

■ 「ローカルリポジトリ」の編集内容を、「リモートリポジトリ」に「プッシュ(アップロード)」する
という操作をすることになる。

各自で編集した内容は、その都度、個人で「インデックス」に「仮保存」をし、
終わった編集内容を正式な変更として、「ローカルリポジトリ」に「日時」「編集内容」を「コミット(登録)」する。
「ローカルリポジトリ」に「コミット(登録)」された「変更内容」を
「リモートリポジトリ」に「プッシュ(アップロード)」するので、


  
インデックス通常の個人での「編集内容」を「保存」をする領域。
ローカルリポジトリ
いつでも編集の「採用」「取り消し」ができるように、
「過去」「新規」の「編集内容」
時系列で保存する領域。
リモートリポジトリ 共同開発チーム全員が、
・「作業状況」の確認
・「最新データ」「過去データ」の保存
・「最新データ」「過去データ」の取得
などをする領域。


Back

「Git」の「基本用語」


基本用語説明
リポジトリ(repository) 「リポジトリ」は、
「ファイル」「ディレクトリ」を入れて保存しておく場所(貯蔵庫・金庫)を意味している。
「Git」における「リポジトリ」の種類は、
リモートリポジトリ「特定のサーバー上」に設置して「複数人」で「共有」するための「リポジトリ」。
ローカルリポジトリ「ユーザーのPC」ごとなどに配置される「各ユーザー」が「管理」「編集」できる「リポジトリ」。
「リモートリポジトリ」「ローカルリポジトリ」に分けることにより、
「変更」などの「編集作業」は、それぞれのユーザーが手元の「ローカルリポジトリ」で実行し、
「変更」などをした「作業内容」を共有するときに「リモートリポジトリ」にアップロードし、
他の共同編集しているユーザーなどにで公開するという手順で、
「Git」を活用する。
「リモートリポジトリ」を確認することにより、
「他のユーザー」は、作業内容を確認でき、
開発を効率良く進めることが可能となる。
「ワークツリー」と「インデックス」 「ワークツリー」と「インデックス」は、
ワークツリー「ユーザー」が編集している編集している「ディレクトリ」で、作業場所となるのが「ワークツリー」。
インデックス作業場所となるのが「ワークツリー」と保存場所である「ローカルリポジトリ」の間にある「中間領域」が「インデックス」。
「Git」では、 「ワークツリー」で編集した「ファイル」を「コミット」する場合、
一度「インデックス」に登録する必要がある。
編集したファイルを「リポジトリ」へコミットする前に、「インデックス」へ「登録(仮置き・add・一時保管)」しておく。

「ワークツリー」から「リポジトリ」への保存は、
「リポジトリ」を利用して「編集前」に戻すことが出来なくなるので、
「編集ミス」を補うことが出来なくなる。
そのため、
「ワークツリー」と「インデックス」という概念が必要になる。

コミット予定のファイルをインデックスに仮置きすることで、
「編集した内容:を後から確認でき、
その上で、ローカルリポジトリに記録する「コミット」を実行できる。

「編集したファイル」のコミットし忘れや、
「余計なファイル」を含めずにコミットする
ということが可能となる。
クローン(clone) 「クローン(clone)」は、 「リモートリポジトリ」を「ユーザー」の「ローカルリポジトリ」に「ダウンロード」する作業で、
「ユーザー」の「PC」に、
「リモートリポジトリ」と同じものを作るため
「クローン(コピー)」を作る。

共同開発で、
一番最初に行う作業でもある。
操作方法
コミット(commit) 「コミット」は、
「インデックス」に「一時保存」されている「編集内容」を、
「ローカルリポジトリ」に「記録」「保存」する操作。

「コミット」を実行するごとに、
「ファイル編集の日時」を記録した「ファイル」が生成され、
「時系列順」に整理され格納される。

後から、
「ファイル」の「更新履歴」「編集内容」を確認することができることになる。
プッシュ(push) 「プッシュ」は、
「ローカルリポジトリ」にある「編集ファイル」を
「リモートリポジトリ」に「送信(アップロード)」し、「保存」する操作。
ブランチ(branch) 「ブランチ」は、
「編集ファイル」を分岐させて記録する機能。

「分岐前」の「元データ」を「マスターブランチ」と呼び、「メインのブランチ」とする。
編集前に、「ブランチ(分岐)」を造り、
編集内容を保存する「インデックス」に似た、「仮置き場」の「ローカルリポジトリ」を作成することも可能。
マージ(merge) 「マージ」は、
「ブランチ」「開発」などによって、
「複数」のブランチとなったものを、一つにまとめる「作業」。

「バグの修正」「機能の追加」などの編集をした「ブランチ」を、
「マスターブランチ」に統合する作業など。
プル(pull) 「プル」は、
「リモートリポジトリ」内の「新規ファイル」「最新ファイル」などを、
個別に「ローカルリポジトリ」に「ダウンロード」する機能。
「クローン」との違いは、 「リモートリポジトリ全体」を「ダウンロード」するのが「クローン」。
「リモートリポジトリ」内の一部の「ファイル」「データ」だけを「ダウンロード」するのが「プル」。

「ローカルリポジトリ」にある「編集ファイル」と
「リモートリポジトリ」の「同じファイル」が「更新」されていた場合、
「プル」操作の際に、エラーが出る。
知らないと「編集内容」が喪失する可能性もある。
「フェッチ」による確認で、「エラー回避」が可能。
フェッチ(fetch) 「フェッチ」は、
「最新情報」があるかを「確認」してくれる機能。
「リモートリポジトリ」から
自動で「更新履歴」などを確認し、「最新ファイル」「最新データ」などの最新情報を「取得」してくれる。
「プル(個別ダウンロード)」はしないので、
必要な場合は、自身で「プル」操作をする必要がある。


Back

「Git」の「コマンド」


「Git」を操作するための
基本的な操作コマンド。

「Git」は、
「CUI」での操作なので、
「コマンド」は必須。



動作内容コマンド・説明
初期設定を行う $ git config --global user.name "〇〇〇〇"
$ git config --global user.email "〇〇〇〇@hogehoge.com"
ローカルにリポジトリを作成、リモートにプッシュ $ git init
$ git add .
$ git commit -m "Initial commit"
$ git remote add origin
https://github.com/〇〇〇〇/〇〇〇〇.git
$ git push -u origin master
リモートからクローン $ git clone https://github.com/〇〇〇〇/〇〇〇〇.git
リモートから変更を取得 $ git pull
or
$ git fetch
$ git merge origin/master
ファイルの登録(コミット) $ git add ファイル名
ファイルの変更や追加をコミット $ git commit -m "コミットメッセージ"
ローカルの変更を確認 $ git status
リモートとローカルのファイル内容の違いを抽出 $ git diff ファイル名
commitの変更履歴をみる $ git log
指定したcommitの変更点を確認 $ git show コミットのハッシュ値
リモートにプッシュ $ git push origin ブランチ名
addの取り消し $ git reset HEAD ファイル名
commitの取り消し $ git reset --hard HEAD^

--hard:コミット取り消した上でワークディレクトリの内容も書き換え
--soft:ワークディレクトリの内容はそのままでコミットだけを取り消し

HEAD^:直前のコミット
HEAD~{n} :n個前のコミット
commitの取り消し $ git revert コミットのハッシュ値
コミットメッセージの修正 $ git commit --amend "新しいコミットメッセージ"
pushの取り消し $ git reset --hard 戻したいコミットのハッシュ値
$ git push -f
ローカルでブランチを作成 $ git branch ブランチ名
ローカルでブランチを切り替え $ git checkout ブランチ名
ブランチ作成 & 切り替え $ git checkout -b ブランチ名
ブランチ名の変更 $ git branch -m 古いブランチ名 新しいブランチ名
ブランチの削除 $ git branch -d ブランチ名
ローカルのブランチをリモートに反映 $ git push -u origin ローカルのブランチ名
リモートのブランチをローカルへダウンロード $ git branch ブランチ名 origin/ブランチ名
リモートのブランチをローカルへダウンロード & 切り替え $ git checkout -b ブランチ名 origin/ブランチ名
全てのブランチを確認 $ git branch -a
ブランチを比較 $ git diff ブランチ名 ブランチ名
ブランチをマージ $ git merge ブランチ名
fast-forwardの関係であっても必ずマージコミットを作成 $ git merge --no-ff ブランチ名
ブランチをリベース $ git rebase ブランチ名

※ mergeの場合は分岐元、rebaseの場合は分岐先のブランチで実行という点に注意。
変更点を一旦退避 $ git stash save
退避した作業の一覧を見る $ git stash list
退避した作業を戻す $ git stash apply stash名
退避した作業を消去 $ git stash drop stash名
退避した作業をすべて消去 $ git stash clear
ファイル削除 $ git rm -f ファイル名
ファイルリネーム $ git mv 元のファイル名 変えたいファイル名
ファイルを最新のコミットの状態に戻す $ git checkout HEAD ファイル名
ファイルを指定コミットまで戻す $ git checkout コミットのハッシュ値 ファイル名
.gitignore を無視して追加 $ git add -f ファイル名
ディレクトリだけ登録(.gitkeepをディレクトリに作成) $ touch ディレクトリ名/.gitkeep


Back