Git概念まとめ1部


Gitの歴史


従来LinuxカーネルはBitKeeperバージョン管理システムを介してオープンソースとして動作していた.これはユーロサービスですが、Linuxに無料で公開されています.Linuxコミュニティの開発者の誤りにより、BitKeeperとLinuxコミュニティの関係に問題が発生し、BitKeeperはLinuxコミュニティへの関心を停止し、使用料を有料に変更しました.
そのため、Linuxを作成したLinuxTobalsは、BitKeeperを有料で使用するよりも、自分で新しいバージョン管理ツールを作成して登場したのがGitです.現在、Gitは世界で最も膨大で強力な分散バージョン管理システムとなっている.

Git機能


Gitの最大の利点は「迅速な分散バージョン管理」です.

GitとGithub


ここに来た人なら、Githubは知っているはずです.実はGitとGithubは明らかに違います.Gitはバージョン管理システムで、サーバではありません.Gitを使ってバージョン管理はできますが、サーバーがアップロードできなければ役に立たないです.そこで、Gitのためにいくつかのサーバ(Github、Gitlabなど)を用意し、その中で最も有名で、最も無料で公開されているのはGithubです.そしてgithubcomはgithubサーバ上でgitのフロントエンドページとサービスを使用するのに役立ちます.

リポジトリ(リポジトリ)


リポジトリは、ローカル・リポジトリとサーバ・リポジトリに大きく分けることができます.簡単に、サーバ上のコードをローカルストレージ(cloneまたはpull)として受信し、必要に応じて変更してアップロードすればよい(push).この「ダウンロードやアップロードなどのタスク」の職場がリポジトリです.
通常、リポジトリのサイズはかなり大きいです.1つのサービスにおいて,コード単位でインタラクションを行うものはすべて同じリポジトリにあると考えられる.Webページのfrontendを作成したとすると、そのWebページのfrontendを作成するときに追加されるすべてのコードがリポジトリに含まれます.実際に大きなコードでは、コード全体をダウンロードするだけで数時間かかる場合があります.
前述したように、リポジトリに1000個のファイルがあるが、変更する機能が非常に小さい場合は、1000個のファイルをダウンロードし、そのうちの1つのファイルで1行を変更してアップロードする必要がある場合があります.このように見ると欠点のように見えますが….通常、ローカルでどのコードを使用して構築しても、完全なコードが必要です.これは逆にメリットです.

ステージ(トレース)


ローカルでコードをダウンロードすると、サーバで見たrepositoryにコードがあるように、ローカルで見たのはフォルダのコードです.このとき、Gitはフォルダにどのファイルがあるかを自動的に認識します.その後、ユーザの命令に従ってGit上でこれらのファイルを追跡するかどうかを決定する.repositoryをローカルでコピーした場合.git履歴を管理するフォルダであるgitフォルダを見たことがあるはずです.変更履歴、ファイル追加履歴などすべての内容がこのフォルダに保存されます.
ここで、トレースとは、Gitがファイルの変化を自動的に検出し、コミットまたはプッシュ時にそのファイルが含まれているかどうかを指す.全て追跡すれば良いと考えられますが、思ったほどではありません.たとえば、ローカルで生成できるコンテンツをアップロードする必要はありません.たとえばdoxygen、package fileなどは、「何かをダウンロードする」とだけ言って、ローカルで構築をダウンロードしたほうがいいです.reactのnode_modulesフォルダなどです.
したがって、通常は、必要なファイルのみをステージにします.ステージはaddコマンドを使用します.一度だけaddを作成すると、Gitはその後、ファイルのすべての内容を追跡します.変更、変更時間、削除、削除時間など...もちろん、うっかりファイルをステージにしてしまうと、ステージを行わない方法もあります.
それはすべての書類に対してgit addをすることはできませんか.そうではありません.このとき使用されるのが.gitignoreです.このファイルはGitが追跡しないファイル(のパターン)を指定しています.一般的には、.gitignoreファイルを作成し、git add .を行います..gitignoreで指定されたファイルを除いて、すべてのファイルが自動的にステージされます.

コミット(コミット)


以前、コードをダウンロードしてアップロードするプロセスは、非常に大きなコードをダウンロードして、非常に大きなコードをアップロードすることでした.ただし、Gitを使用したことがある場合、Gitの大きな利点は、「すべて」の変更履歴を表示し、いつでもその時点に戻ることです.では、これらのすべての時点をコピーし、その時点のスナップショットを保存するかどうか.そうではありません.commitは水晶の歴史の破片です.ファイルの追加、ファイルの変更(数回と数回の行の削除、数回と数回の行の追加など)などの情報を格納します.これはリンクリストのようなもので、今2回コミットしたら、
원본 코드 -> (커밋 1ebd72)몇번 줄에 뭐라고 쓰고 몇번 줄은 지운다 -> (커밋 1deea5)또 뭔가 쓰고 뭔가 지운다 -> 현재 코드 
このように続いていきます.したがって,中間フェーズのコミットに失敗すると,前の履歴も失敗する.gitフォルダに触らないでください.もちろん彼を動かさないようにGitは内部で彼を捕まえるどうせ.
また,このコミット履歴はローカルに格納されているという意味でオフラインで動作できる.コミットはサーバと対話するアクティビティではありません.これはGitの大きな利点です.
気づいたかもしれませんが、プシーもそうです.コード全体をサーバにアップロードするのではなくgitフォルダに保存されているコミット履歴リストをプッシュします.したがって、ローカルでファイルを変更しようと努力しても、コミットしなければ、pushコマンドをいくら入力しても、サーバ上のコードは変更されません.プッシュ可能なものはありません.(実際、Gitは興奮して警告を出して、もしあなたがpushを提出したいなら、提出します.)