バージョン管理
バージョン管理バージョン反復、新しいバージョンとは何ですか
リビジョン管理は、開発プロセス中にファイル、ディレクトリ、またはプロジェクトの変更履歴を管理し、変更履歴の表示を容易にし、バックアップして前のバージョンを復元するために使用されるソフトウェアエンジニアリングテクノロジです。
- 地域を超えた複数人の共同開発を実現する
- 1つ以上のファイルの履歴を追跡および記録する
- ソースコードとドキュメントを整理して保護する
- 統計的ワークロード
- 並行開発、開発効率の向上
- ソフトウェア開発プロセス全体を追跡および記録する
- 開発者の負担を軽減し、時間を節約し、人的エラーを減らします
簡単に言えば、それは複数人の共同開発プロジェクトを管理するために使用されるテクノロジーです。
バージョン管理が実行されない場合、またはバージョン管理自体に正しいプロセス管理がない場合、ソフトウェアコードの一貫性、ソフトウェアコンテンツの冗長性、ソフトウェアプロセスのトランザクションの性質など、ソフトウェア開発プロセスに多くの問題が発生します。およびソフトウェア開発プロセスの並行性。セキュリティ、ソフトウェアソースコードセキュリティ、およびソフトウェア統合の問題。
一般的なバージョン管理ツール
私たちが学んだことは、現時点で最も人気があるに違いありません!
主流のバージョンコントローラーは次のとおりです。
- ギット
- SVN(Subversion)
- CVS(同時バージョンシステム)
- VSS(Micorosoft Visual SourceSafe)
- TFS(Team Foundation Server)
- Visual Studio Online
多くのバージョン管理製品(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault)があり、現在最も影響力があり広く使用されている製品はGitとSVNです。
バージョン管理の分類
1.ローカルバージョン管理
ファイルの各更新を記録し、各バージョンのスナップショットを作成するか、RCSなどの個人的な使用に適したパッチファイルを記録できます。
2.一元化されたバージョン管理SVN
すべてのバージョンデータはサーバーに保存され、開発者はサーバーからの更新を同期したり、独自の変更をアップロードしたりできます
すべてのバージョンデータはサーバーに保存され、ユーザーのローカルには以前に同期したバージョンのみが含まれます。ユーザーがインターネットに接続していない場合、ユーザーは履歴バージョンを表示できず、バージョン検証の問題を切り替えることができません。 、または別のブランチで作業します。また、すべてのデータが1台のサーバーに保存されているため、このサーバーが破損するリスクが高く、すべてのデータが失われることはもちろん、定期的にバックアップすることもできます。代表的な製品:SVN、CVS、VSS
3.分散バージョン管理Git
誰もがすべてのコードを持っています!セキュリティリスク!
すべてのバージョン情報リポジトリは各ローカルユーザーに同期されるため、すべてのバージョン履歴をローカルで表示したり、ローカルでオフラインで送信したりできます。インターネットに接続している場合は、対応するサーバーまたは他のユーザーにプッシュするだけで済みます。各ユーザーがすべてのバージョンデータを保存するため、1人のユーザーのデバイスに問題がない限り、すべてのデータを復元できますが、これによりローカルストレージスペースの占有が増加します。
サーバーの損傷やネットワークの問題のために動作できなくなります!
GitとSVNの主な違い
SVNは一元化されたバージョン管理システムです。バージョンライブラリは中央サーバーに一元化されています。作業するときは、自分のコンピューターを使用します。したがって、最初に中央サーバーから最新バージョンを取得してから作業する必要があります。作業が終了したら、必要な作業を中央サーバーにプッシュします。集中型バージョン管理システムが機能するには、インターネットに接続する必要があります。これには、高いネットワーク帯域幅が必要です。
Gitの履歴
人生の多くの素晴らしいもののように、Gitは大きな論争と革新の時代に生まれました。
Linuxカーネルのオープンソースプロジェクトには多数の参加者がいます。Linuxカーネルのメンテナンス作業のほとんどは、パッチの送信と保存およびアーカイブの面倒なタスクに費やされました(1991年から2002年まで)。2002年までに、プロジェクトチーム全体が、独自の分散バージョン管理システムBitKeeperを使用してコードを管理および保守し始めました。
Linuxコミュニティには多くの有名人がいます!研究ビットキーパーをクラック!
2005年、BitKeeperを開発した営利企業は、Linuxカーネルオープンソースコミュニティとのパートナーシップを終了し、LinuxカーネルコミュニティがBitKeeperを無料で使用する権利を取り戻しました。これにより、Linuxオープンソースコミュニティ(特にLinuxの作成者であるLinus Torvalds)は、BitKeeperの使用時に学んだ教訓に基づいて独自のバージョンシステムを開発する必要があります。(約2週間!)後でGit!
Gitは現在、世界で最も先進的な分散バージョン管理システムです。
Gitは無料でオープンソースです。当初、GitはLinuxカーネルがBitKeeperに取って代わるのを支援するために開発されました。
LinuxとGitの父LinusBenedic Torvalds(Linus Benedic Torvalds)1969、フィンランド
Git環境の構成
ソフトウェアのダウンロード
gitの公式ウェブサイトを開き、オペレーティングシステムに対応するバージョンのgitをダウンロードします。
すべてのダウンロードが遅い場合は、ミラーを見つけることができます
公式サイトのダウンロードが遅すぎるので、淘宝網ミラーを使用できます
環境変数は自動的に構成されます
Gitを開始する
** Git Bash:** UnixおよびLinuxスタイルのコマンドライン、最も使用され、推奨されています
** Git CMD:** Windowsスタイルのコマンドライン
Git GUI:グラフィカルインターフェイスを備えたGit。初心者にはお勧めしません。最初に一般的なコマンドに慣れてください。
Git構成
すべての構成ファイルは実際にはローカルに保存されます!
Git関連の構成ファイル:
1)、Git \ etc \ gitconfig:gitconfig --Gitインストールディレクトリの下のシステムシステムレベル
2)、C:\ Users \ PengHuAnZhi \ .gitconfigは、現在ログインしているユーザー--globalの構成にのみ適用できます。
さまざまなレベルで構成ファイルを表示します。
#查看配置
git config -l
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
- システム構成
- ユーザー構成
Gitをインストールした後、最初に行う必要があるのは、ユーザー名と電子メールアドレスを設定することです。
すべてのGitコミットがこの情報を使用するため、これは非常に重要です。それはあなたの提出物に永久に埋め込まれます:
ここでユーザーの構成をクリアし、再構成します
#配置用户名
git config --global user.name "PengHuAnZhi"
#配置邮箱
git config --global user.email "[email protected]"
Gitの基本理論
3つの地域
Gitには、ローカルに3つの作業領域があります。作業ディレクトリ(作業ディレクトリ)、ステージング領域(ステージ/インデックス)、およびリソースライブラリ(リポジトリまたはGitディレクトリ)です。リモートgitリポジトリ(リモートディレクトリ)を追加すると、4つの作業領域に分割できます。これら4つの領域間のファイル変換関係は次のとおりです。
- ワークスペース:ワークスペースは通常、プロジェクトコードを保存する場所です
- インデックス/ステージ:変更を一時的に保存するために使用される一時的な保存領域実際には、ファイルリストに送信される情報を保存するための単なるファイルです
- リポジトリ:ウェアハウスエリア(またはローカルウェアハウス)は、データが安全に保存される場所であり、すべてのバージョンに送信するデータが含まれています。HEADが倉庫に入れられた最新バージョンを指している場所
- リモート:リモートウェアハウス、コードをホストするサーバー。リモートデータ交換のためのプロジェクトチーム内のコンピューターと見なすことができます。
3つのローカルエリアは、gitリポジトリのHEADが指すバージョンとまったく同じである必要があります。
- ディレクトリ:Gitによって管理されるディレクトリ、つまり倉庫で、作業スペースとGit管理スペースが含まれています。
- WorkSpace:Gitを介してバージョン管理する必要のあるディレクトリとファイル。これらのディレクトリとファイルはワークスペースを形成します。
- .git:Git管理情報を保存するためのディレクトリで、ウェアハウスの初期化時に自動的に作成されます。
- インデックス/ステージ:一時ストレージ領域、または送信する更新領域。リポジトリに送信する前に、すべての更新を一時ストレージ領域に配置できます。
- ローカルリポジトリ:ローカルリポジトリ、ローカルに保存されたリポジトリ。HEADは現在の開発ブランチ(ブランチ)のみになります。
- Stash:Hiddenは、作業状態の保存スタックであり、WorkSpaceで一時的な状態を保存/復元するために使用されます。
作業過程
gitのワークフローは一般的に次のようになります。
1.作業ディレクトリのファイルを追加および変更します。
2.バージョン管理が必要なファイルを一時ストレージ領域に配置します。
3.一時ストレージ領域のファイルをgitリポジトリに送信します。
したがって、gitによって管理されるファイルには、変更、ステージング、コミットの3つの状態があります。
Gitプロジェクトの構築
作業ディレクトリと一般的な手順を作成する
作業ディレクトリ(WorkSpace)は通常、Gitで管理できるようにするフォルダーです。プロジェクトのディレクトリにすることも、空のディレクトリにすることもできます。中国語を使用しないことをお勧めします。
毎日使用する場合は、以下の6つのコマンドを覚えておいてください。
地元の倉庫建設
ローカルウェアハウスを作成するには、2つの方法があります。1つは新しいウェアハウスを作成する方法、もう1つはリモートウェアハウスのクローンを作成する方法です。
1.まったく新しいウェアハウスを作成するには、GITが管理するプロジェクトのルートディレクトリを使用してウェアハウスを実行する必要があります。
# 在当前目录新建一个Git代码库
$ git init
2.実行後、プロジェクトディレクトリに.gitディレクトリがもう1つだけあり、バージョンに関するすべての情報がこのディレクトリにあることがわかります。
リモートウェアハウスのクローンを作成する
1.もう1つの方法は、リモートサーバー上のウェアハウスがローカルに完全にミラーリングされているため、リモートディレクトリのクローンを作成することです。
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]
2. giteeまたはgithubに移動して、テストのクローンを作成します。
Gitファイルの操作
ファイルの4つの状態
バージョン管理はファイルのバージョン管理です。ファイルを変更して送信するには、最初にファイルの現在のステータスを知る必要があります。そうしないと、送信したくないファイルを送信したり、送信するファイルが送信されなかったりする可能性があります。
- Untracked:Untracked、このファイルはフォルダー内にありますが、gitリポジトリに追加されておらず、バージョン管理に参加していません。ステータスはgitaddを介してステージングに変わります。
- Unmodify:ファイルはライブラリに保存されており、変更されていません。つまり、バージョンライブラリのファイルスナップショットの内容は、フォルダ内とまったく同じです。このタイプのファイルは、変更された場合、2つの場所になります。 、Modifiedになります。gitrmを使用してリポジトリから移動すると、Untrackedfileになります。
- 変更済み:ファイルは変更されており、変更のみで、その他の操作はありません。このファイルにも2つの場所があります。gitaddを使用して一時的なステージング状態に入り、git checkoutを使用して変更された状態を破棄し、変更されていない状態に戻ることができます。このgitcheckoutつまり、ライブラリからファイルを取り出して、現在の変更を上書きします。
- 段階的:一時ストレージステータス。gitcommitを実行して、ライブラリへの変更を同期します。この時点で、ライブラリ内のファイルとローカルファイルの整合性が再び維持され、ファイルはUnmodify状態になります。gitresetHEADファイル名を実行してキャンセルします。一時ストレージであり、ファイルステータスが変更されています
ファイルステータスの表示
上記では、ファイルには4つの状態があると述べていますが、ファイルの状態は次のコマンドで表示できます。
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
# git add . 添加所有文件到暂存区
# git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
ファイルを無視する
データベースファイル、一時ファイル、デザインファイルなど、特定のファイルをバージョン管理に入れたくない場合があります。
ホームディレクトリに「.gitignore」ファイルを作成します。このファイルには次のルールがあります。
- ファイル内の空白行を無視するか、ポンド記号(#)で始まる行は無視されます。
- Linuxワイルドカードを使用できます。例:アスタリスク(*)は任意の数の文字を表し、疑問符(?)は文字を表し、角括弧([abc])はオプションの文字の範囲を表し、中括弧({string1、string2、...} )オプションの文字Skewerを表します。
- 名前の先頭に感嘆符(!)がある場合、それは例外ルールを意味し、無視されません。
- 名前の前がパス区切り文字(/)の場合、無視されるファイルがこのディレクトリにあり、サブディレクトリ内のファイルが無視されないことを意味します。
- 名前の末尾にパス区切り文字(/)がある場合は、ファイルではなく、このディレクトリの下にあるその名前のサブディレクトリが無視されることを意味します(デフォルトのファイルまたはディレクトリは無視されます)。
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
Githubを使用する
Githubには壁があり、比較的低速です。中国では通常giteeを使用しますが、会社が独自のgitlabサーバーを構築することもあります。
1. SSH公開鍵をバインドするようにマシンを設定して、パスワードなしのログインを実現します。(パスワードなしでログインします。この手順は非常に重要です。Githubはリモートウェアハウスであり、通常はローカルウェアハウスで作業します!)
# 进入 C:\Users\PengHuAnZhi\.ssh 目录
# 生成公钥
ssh-keygen
Enterキーを最後まで押して、sshファイルを生成します
2.公開鍵情報をGithubアカウントに追加します
id_rsa.pubファイルの公開鍵をコピーしてGithubに追加します
[OK]をクリックして、保存するパスワードを入力します
新しい倉庫を作成する
.gitignoreファイルは、ウェアハウスを送信するときに送信されたファイルを無視します
ライセンス:オープンソースを自由に複製できるかどうか、オープンソースであるが商用目的ではないかどうかは複製できません...制限!
IDEAはGitを使用しています
Githubリポジトリをインポートする
必要なプロジェクト構成
次に、Mavenがjarパッケージを再インポートします
正常にインポートされました
ファイルを変更した後、送信します
正常に送信されました
次に、コミット情報を確認できます
押して引く
Gitブランチ
GITでは分岐は比較的困難です。分岐はSF映画のパラレルユニバースです。2つのパラレルユニバースが互いに干渉しなければ、今は影響がありません。しかし、ある時点で、2つの並列ユニバースがマージされ、いくつかの問題に対処する必要があります。
gitブランチの一般的なコマンド
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]