楽しいGitの

Gitの

1. Gitの歴史

人生の大きなイベントの多くと同様、Gitのは、大規模な紛争の非常に革新的な時代に生まれました。Linuxカーネルのオープンソースプロジェクトは、公共の参加の広い数を持っています。Linuxカーネルの保守作業の大半は、パッチを提出過ごし、(1991年 - 2002年)アーカイブ面倒な業務を保存しています。2002年までに、全体のプロジェクトチームは、コードを管理し、維持するために、分散型バージョン管理システムのBitKeeperを有効にするために始めました。

同社は、オープンソースのLinuxカーネルコミュニティの端とのBitKeeperビジネス関係を開発し、2005年、ことで、彼らはBitKeeperのを無料でご利用の力を回復しました。これは、Linuxのオープンソースコミュニティ(特にLinuxの創始者Linus Torvalds氏は)彼らは同じミスをしていない場合のみ、バージョン管理システムの独自のセットを開発し、学ばなければならなかった余儀なくされました。彼らは、新しいシステムの目標数を設定します。

•スピード

•シンプルなデザイン

•非直線モードの開発のための強力なサポートは、(並行開発ブランチの何千もすることができます)

•完全分散

•Linuxカーネルは(スピードとデータ量)に似ているように効率的に大規模なプロジェクトを管理する能力を持っています

ダウンロード:

https://www.kernel.org/pub/software/scm/git/

2. GitリポジトリとSVNのコントラスト

2.1.Svn原理分析

SVNの集中バージョン制御管理システムに属し、システムがアップデートを取得するために提出した最新の文書を抽出し、SVNサーバを接続することで、すべてのファイルリビジョン、および同僚が保存されます。

この図は、標準、集中バージョン管理ツールの管理であります:

IMG

簡単に一人一人の開発権を把握することができる他のどのような開発者、および管理者が参照するには、ある程度の集中管理。

しかし、その利点と比較して、集中型のバージョン管理ツールの欠点は明白です:

  1. 障害が発生したサーバーの単一のポイント
  2. 貧しいフォールトトレランス

2.2.Git原理分析

2.2.1.Svn、レコード固有の違い

Gitリポジトリや他のバージョン管理システムとの主な違いは、Gitは唯一の他のほとんどのシステムは、唯一の懸念ファイルの内容で特定の違いをしながら、全体のデータファイルの変更かどうかを気に、ということです。このようなシステム(CVS、Subversionの、PERFORCEの、バザールなど)のファイルが更新されている、と何が、図1.4を参照してくださいどの行に更新されているすべてのレコード。

IMG

全体的な変化を記録2.2.2.Git

Gitは変更前と変更後のこれらの違いのためにデータを格納しません。実際には、より小型のファイルシステムに記録されているスナップショットなど、ファイルの変更、などのGitの。更新をコミットするたびに、それがその後、どのようなファイルやスナップショットなどのファイル指紋情報の全て、との絵は、スナップショットにインデックスポイントを保存します。

ファイルが変更されていない場合は、パフォーマンスを向上させるために、Gitは再び、唯一の接続のための最後に保存したスナップショットに保存されません。図1.5に示すように、Gitは動作します。

IMG

これは、Gitの他のシステムとの重要な違いです。それは完全に伝統的なバージョン管理ルーチン、およびのすべての側面を覆します

私たちは、新しいデザインの実装を行いました。より小さなファイルシステムのようにGitは、それはまた、これに基づいて、多くを提供します

強力なツールだけではなく、シンプルなVCS。第三章Gitのブランチ管理その後、とき、私たちは意志

メリットがもたらすまさにこのデザインを見てください。

2.2.3操作はローカルで実行

Gitはあなたにそれを読むためにローカル・データベースから直接データを取り戻すために外部のサーバーの移動する必要があり、表示されません。だから、いつでもあなたは待つことなく、すぐに読むことができます。

あなたが前にどのような違いがバージョンと月の間で、ファイルの現在のバージョンを確認したい場合は、Gitは現在のファイルのスナップショットを削除し、むしろそれを行うには、リモート・サーバに要求するよりも、操作の前に違いを一月を作りますか、比較のために、ローカルファイルの古いバージョンを引っ張りました。

2.2.4。データの整合性

Gitのを保存する前に、すべてのデータは、計算されたチェックサム(チェックサム)コンテンツであり、この固有の識別データとインデックスの結果として。言い換えれば、あなたは、ファイルまたはディレクトリを変更することはできません後、Gitの何もありません。

全体的なアーキテクチャの一番下に構築されたデザイン哲学、などのGitの特性。ファイルは転送時にいっぱいになる、またはディスクの破損、データの欠落ファイルの原因のであれば、Gitは即座に検出することができます。

GitはSHA-1ハッシュ値、指紋などの文字列を計算するコンテンツ構造ファイルまたはディレクトリによって、データのチェックサムを計算するためにSHA-1アルゴリズムを使用します。40進文字(0-9およびAF)は、組成物の文字列が、それは次のようになります。

24b9da6552252987aa493b52f8696cd6d3b00373

Gitの作業は、指紋文字列のこのタイプに完全に依存しているので、あなたは、このようなハッシュ値を頻繁に表示されます。実際には、Gitのデータベースに保存されているすべてのものは、インデックスではなく、ファイル名のハッシュ値を作るために使用されています。

2.2.5。三状態

现在请注意,接下来要讲的概念非常重要。

对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

由此我们看到 Git 管理项目时,文件流转的三个工作区域:Git 的本地数据目录,工作目录以及暂存区域。

IMG

  1. 如果是 git 目录中保存着的特定版本文件,就属于已提交状态;
  2. 如果作了修改并已放入暂存区域,就属于已暂存状态;
  3. 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

3. Git服务器搭建

Git服务器可以搭建在windows,也可以搭建在Linux中,由于windows中copssh登录git服务器软件已经收费,免费版本有很多缺点。因此把git服务器搭建在Linux中。

3.1.依赖环境

Git需要很多依赖环境:因此安装git需要先安装下列软件:

[root@itcast-01 ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc-c++

3.2.安装git

上传git安装包:

安装包:git-2.9.3.tar.gz

tar -xvf git-2.9.3.tar.gz

安装命令:(进入git解压目录)

[root@itcast-01 git-2.9.3]# make prefix=/usr/local all

[root@itcast-01 git-2.9.3]# make prefix=/usr/local install

3.3.创建git用户

添加Linux的用户,用户名为git的用户:

[root@itcast-01 ~]# useradd git

设置git用户的密码

[ルート@のitcast-01〜]#のpasswd gitの

ユーザーのgitに切り替え

[ルート@ itcast-01〜]#SU - gitの

3.4。初期化倉庫

初期化倉庫、taotao.gitと呼ばれる倉庫:

[gitの@ itcast-01ルート] $ cdが

$ gitの初期化--bar taotao.gitする[itcast-01〜@行きます]

/home/git/taotao.git/に空のGitリポジトリの始まり

Gitリポジトリの4. Eclipseの使用

4.1。コードチェック

4.1.1。Gitリポジトリを使用して設定します

IMG

IMG

4.1.2。Gitのファイルストレージのパスを設定します

IMG

IMG

4.1.3。設定ファイルの無視

IMG

無視されるべきでチェックインのファイルを追加し、以下の図、

IMG

4.1.4。ローカル(ステージングエリア)にコードを提出します

バックビューのJava

IMG

gitのにコードを追加します。

IMG

ローカルにコードを提出します

IMG

IMG

4.1.5。Gitのサーバーにコードを提出します

IMG

Gitのサーバーのアドレスを設定するには:

IMG

IMG

IMG

4.1.6。チェックイン操作検出gitのサーバ

Gitのサーバへの最初のサンプル、図にサーバgitの次の後続のチェックコード検出動作後。

IMG

注:役割がローカルにコードを提出することで提出することをコミットします。

ローカルコードの役割は、リモートのgitサーバーに送信されるプッシュ。

4.2。検出符号

4.2.1。ローカルにgitリポジトリをクローン

IMG

IMG

IMG

4.2.2。Gitのファイルストレージのパスを設定します

IMG

4.2.3プロジェクトのエクスポート

IMG

IMG

プロジェクト名を記入

IMG

プロジェクトの対応するタイプに変換

IMG

4.3紛争解決

4.3.1。コードの違反を解決

IMG

IMG

4.3.2。競合を解決するためのコードを送信

紛争解決のコード実行インデックスに追加

IMG

ローカル最初にコミット

リモートのgitサーバーに再びプッシュ

IMG

おすすめ

転載: blog.csdn.net/weixin_40160543/article/details/92369902