Gitでできることは?
AI要約
Gitとは?【ソースコードなどを管理・共有するのに使う分散型バージョン管理システム】
Gitはソースコードなどを管理・共有するのに使う分散型バージョン管理システムです。
Gitはソースコードや変更履歴を管理するために使われる、代表的な分散型バージョン管理システムです。Gitによってファイルのバージョンを管理できるので、仮にほかの誰かにソースコードが上書きされても、簡単に元へ戻すことができます。そのため作業者は、安心してソースコードの更新作業を行えるわけです。
世界中のプログラマーが最も多く使用するコミュニティサイト・スタックオーバーフロー(Stackoverflow)の調査で、約90%以上が1つ以上のGitリポジトリサービスを使用していると答えました。
Gitは開発の現場で幅広く利用されているのはもちろん、デザイナーやライター達にも愛用されています。Gitによってソースコードだけでなく、デザインやテキストなども同じようにバージョン管理できるからです。
Gitのメリット
古いバージョンから新しいバージョンのファイルまで管理ができます。
Gitは一番古いバージョンから最新バージョンまで一元的に管理してくれます。毎回修正するたび、新しいファイルを増やして、見分けられるようにファイル名を指定する必要がありません。Gitは変更点だけ記録しますのでメモリーが軽くまり、保管コストが下がります。
簡単に古いバージョンに戻せます。
以前のバージョンにはコマンドで簡単に戻せます。最新バージョンにまた戻ってくることも可能です。間違えて上書きしてしまっても、特定バージョンでの作業が必要になっても、すぐ戻して作業ができます。
チームでファイルや変更履歴をスムーズに共有できます。
Gitはネットワークを通じて変更履歴を共有できるので、協力して作業ができます。
Githubを使っている場合、変更履歴が必要な場合は、ウェブで簡単に確認できます。 ローカルで確認するときにも、一度のコマンド入力で最新化できます。
豊富な機能を使いチームでの共同開発を効率化できます。
Gitの機能を活用すれば、多数の開発人材が同時に作業することが容易になります。 これにより、開発速度を飛躍的に加速させることができます。
そのためには皆がGitの使い方を知っていて、各ブランチを管理するルールを守って開発する必要があります。
Gitにはclone(複製)、reset(復元)、branch(作業環境生成)、fetch(最新化)などの機能があります。
企業アカウントと個人アカウントの違い
Gitはオープンソースであり、個人的な利用であれば無料バージョンでも十分活用できます。
協業のためにチームに多数のメンバーを招待するか、より多くのメモリの使用、またはより安全なセキュリティが必要な場合は、Team、Enterpriseのプランを購入する必要があります。
https://github.com/organizations/planGitとGithubの違い
Git
VCS(Version Control System)の一種で、プログラムのバージョン管理のためのツールです。
時間(時間によるバージョン変化 v1→v2)と次元(似ているが少しずつ違う形状。 原本とcopy&update本)の二つの軸で管理をしてくれます。
Github
Gitで管理するプロジェクトをオンライン空間に共有し、プロジェクトメンバーが一緒にソフトウェアを作っていけるようにするコード共有および協業サービスです。
オンライン git ストアは、すべてのアップロードとダウンロードをコミット単位でやり取りします。チームメンバーAがコミットしてバージョンを作りアップロードすると、Github上のプロジェクトはそのバージョンで最新化されます。チームメンバーBが完了した作業をコミットしてアップロードするためには、必ずGithub上の最新コミットを先にダウンロードして、自分のコンピュータにあるプロジェクトに適用するよう強制されます。
コミット上の衝突事項があれば、それもチームメンバーBのコンピュータで併合などをして解決することで、初めて自分が作業したコミットを共有空間に上げることができます。
つまり、作業は個々人が希望する空間で希望する時間に行うことができ、共有空間に載せる時には中間で交通整理をして、お互いの作業間にロスが発生しないようにしてくれます。
世界中の多くのオープンソース プロジェクトがGithubで共有されています。
Gitが対応できる環境
- Windows
- Mac(OS X)
- リナックス(Ubuntu, CentOS, Redhat, Debian, etc)
- ユニックス(FreeBSD, Solaris, etc)
Gitの設定
最初に始めるのであれば、gitのconfig過程を進める必要があります。下記はGitのインストール済みのターミナルで行う設定です。
git config コマンドを使用してアカウントに関する情報を設定します。
$ git config –global user.name “ユーザー名”$ git config –global user.email “メール@somedomein.com” |
git init作業を行います。もしGitHubでクローンを得た場合、この作業は必要ありません。下記のサンプルコードをご確認ください。
$ git init |
git initをされたらgitリモートを設定することができます。gitリモートとは、gitを遠隔貯蔵所に保存するアンドポイントを意味します。
$ git remote add origin リモートリポジトリのリンク |
gitリモートURLを利用して遠隔貯蔵所に保存されたファイルをコンピュータにコピーしてくることができます。この時、git cloneコマンドを使用してコピーを開始します。
$ git clone リモートリポジトリのリンク |
git cloneから遠隔ファイルをコピーしてくると、originには基本的にクローンしてきたリモートURLが保存されています。
ソース記録
ソースを記録するためには”git add”命令を使います。
$ git add . |
ignoreファイルや、削除したファイルの履歴までコミットする場合は、”-f”オプションを使います。
$ git add . -f |
“git remote show origin”でoriginにリモートアドレスが登録できているか確認してください。
ソースコミット
ソースをコミットすると、staged状態のファイルが履歴として記録され、積載されます。
ファイル追跡状態の場合、git statusコマンドを利用して確認します。
$ git status |
gitadd以降にgit statusをすると、以下のような画面が表示されます。
Staged状態のファイルはまだ記録された状態ではありません。
ファイルの記録にはコミット作業が必要です。
git commitコマンドを通じてStaged状態のファイルをコミットすることができます。
-m オプションを利用してコミット メッセージを作成することをお勧めします。
誤ってコミットして、再度コミットする場合、コミットを上書きすることができます。 この時 –amend オプションを利用します。
$ git add *$ git commit -m “UIレイアウト修正”# 修正項目発生$ git add *$ git commit -m “UIレイアウト問題修正後、管理者バリデーション追加” –amend |
ソースアップデート
相手がコミットしたファイルは、コマンドを通じて直接更新すると同期されます。
この時に使用するコマンドはgit pullとgit fetchです。
# main ブランチを pullしてアップデート$ git pull origin main # main ブランチ fetchしてアップデート$ git fetch origin main |
pullとfetchの違いは反映するかしないかに分かれます。(今の作業に反映→pull、反映しない→fetch)
pullはfetch+merge作業と思っても問題ありません。
ソースの復元
皆さんがgitを使う理由の中で重要な部分を占める領域です。正常にコミットされたヒストリーは、リビジョンでgitに管理されます。誤って作業したか、以前のバージョンにロールバックして適用した場合、皆さんは以前のバージョンにリセットすることができます。リセットはgit reset コマンドを使用します。
$ git reset HEAD^ –soft |
git reset の次の引数では、返すバージョンの位置を指します。現在地(HEAD)に基づいて相対的な位置を設定するか、特定のバージョン リビジョン固有のハッシュ値を指定します。HEADを確認したい場合は、git reflog命令を利用します。gitresetのオプションのうち、リセット特性を定める–soft、–hard、–mixedオプションがあります。
上記のオプションについては、以下で詳しく説明します。
–softは弱い特性のリセットです。戻すときに既存のインデックスとワーキング ツリーを保存します。
–hardは強い特性のリセットです。戻すときに既存のインデックスとワーキング ツリーを捨てます。
–mixedは中間特性のリセットです。戻すときに既存のインデックスは捨て、ワーキングツリーを保存します。
まとめ
Gitは古いバージョンから最新バージョンまで効率的に管理し、共有を容易にする分散型バージョン管理システムです。
プログラマーにとってGitは、基本的に使えるスキルを持つべきツールになりつつあります。 プログラマーだけでなく、デザイナー、ライターにも愛用されています。
もし、チーム規模で行われる作業に不便を感じたことがあったら、使ってみてはいかがでしょうか?