こんにちは。初めましての人もそうでない人も、
※以下、以前Bloggerに投稿していた記事を移行した内容になります。
今日はPyCharmでのGitの環境構築手順……の前に、Gitの基本的な構成とコマンドのイメージを掴んでいこうと思います。
……と言っても、筆者もGitを使い始めて1年半くらいです(^^ ;)
元々ずっと仕事だとSVNを使ってたので、最初はCommitの違いとかよくわからず、混乱しました。
その際に自分の整理用に図を描いたのですが、知り合いに見せたら好評だったので、この度清書してみました。
その絵がこちら。
◆基本的な構成要素
作業ディレクトリ : 開発者が直接編集しているソースコードが入っている。
ステージング(インデックス) : Git管理(履歴管理とチーム共有)を行う対象ファイルを管理する。
ローカルリポジトリ : 個々人の変更記録とブランチの管理、他のリポジトリの状態を追跡する。
ベアリポジトリ : チームでの変更記録を管理する。ソースコードの実体はない。
ノンベアリポジトリ : ローカルリポジトリと作業ディレクトリを含んだ全体を指す。
◆基本的なコマンド
add : Gitの履歴管理対象として新規作成したファイルを追加する。追加することで、各ファイルの差分が検知されるようになる。
commit : 作業ディレクトリの更新内容をローカルリポジトリに履歴として反映する。
push : ローカルリポジトリの変更内容をベアリポジトリに反映する。他者の変更と競合する場合は、他の変更を先に取り込むよう警告される。
clone : 初回にベアリポジトリの内容をコピーしてローカルリポジトリを生成する。
check out : 開発開始時に作業用にソースコードをローカルリポジトリから反映する。
fetch : ベアリポジトリで管理されている他者の変更をローカルリポジトリに取り込む。
merge : fetchで取得した他者の変更内容を作業用にソースコードに反映する。
rebase : 自分の更新内容を一時保存してから、mergeと同様に他者の変更内容を取り込む。修正履歴が段階的になるのがmergeとは異なる。
pull : fetchとmerge を一度に行う。
◆リモートサーバーの構成について補足(図の※部分)
ベアリポジトリがチーム全体で管理している変更履歴だが、それだけだとソースコードの実体はないので、サーバー内にノンベアリポジトリを構築している場合もある。
Webアプリなどの場合は、ノンベアリポジトリを本番環境にしているケースも。
そうした場合、リモートサーバー内のpullコマンドを毎回人の手で実行させるのは大変なので、pull実行をpost-receiveに定義して、自動反映することもある。
説明としては以上です。
なんとなくイメージ掴めましたでしょうか?
冒頭で述べた通り、筆者もGitのベテランではないので、もしかしたら不適切な説明があるかもしれません。その場合は、コメントで優しくご指摘いただけると助かります。
さて次回は、PyCharmでのGitHubの環境構築手順について説明していきます。
GitHubとは、この図で言うリモートサーバーの部分をweb上でクラウド管理するイメージです。
今後このブログで学習用のソースコード等を共有していくのにGitHubを利用する想定なので、環境構築しました。
筆者自身も勉強しながらになるので至らない部分もあるかもしれませんが、今後とも引き続き温かく見守っていただければ幸いです。
2022/6/25 追記
最近Gitを使ってる夫にローカルリポジトリの中にはローカルブランチとトラッキングブランチなる2つのブランチがあるんだ、という話を聞きました。
ちょっとこのページで説明している内容と若干の齟齬があるので私の理解が誤ってる部分がありそうなのですが、いったん参照としてトラッキングブランチについて説明しているページのリンクをはりつけておきます。
Git使って自分の理解が進んだら改めて、このページの説明を修正するなり、新しく記事を書くなりするようにします。取り急ぎ。
-----------------------------------
素材取得元
・トップイメージ
[フリー写真] パソコンの中の掃除 - パブリックドメインQ:著作権フリー画像素材集
・図中のアイコン