Gitの基盤とIDEAの統合Githubの複数人のコラボレーション

バージョン管理

バージョン管理バージョン反復、新しいバージョンとは何ですか

リビジョン管理は、開発プロセス中にファイル、ディレクトリ、またはプロジェクトの変更履歴を管理し、変更履歴の表示を容易にし、バックアップして前のバージョンを復元するために使用されるソフトウェアエンジニアリングテクノロジです。

  • 地域を超えた複数人の共同開発を実現する
  • 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などの個人的な使用に適したパッチファイルを記録できます。

画像-20201211095615750

2.一元化されたバージョン管理SVN

すべてのバージョンデータはサーバーに保存され、開発者はサーバーからの更新を同期したり、独自の変更をアップロードしたりできます

画像-20201211095638963

すべてのバージョンデータはサーバーに保存され、ユーザーのローカルには以前に同期したバージョンのみが含まれます。ユーザーがインターネットに接続していない場合、ユーザーは履歴バージョンを表示できず、バージョン検証の問題を切り替えることができません。 、または別のブランチで作業します。また、すべてのデータが1台のサーバーに保存されているため、このサーバーが破損するリスクが高く、すべてのデータが失われることはもちろん、定期的にバックアップすることもできます。代表的な製品:SVN、CVS、VSS

3.分散バージョン管理Git

誰もがすべてのコードを持っています!セキュリティリスク!

すべてのバージョン情報リポジトリは各ローカルユーザーに同期されるため、すべてのバージョン履歴をローカルで表示したり、ローカルでオフラインで送信したりできます。インターネットに接続している場合は、対応するサーバーまたは他のユーザーにプッシュするだけで済みます。各ユーザーがすべてのバージョンデータを保存するため、1人のユーザーのデバイスに問題がない限り、すべてのデータを復元できますが、これによりローカルストレージスペースの占有が増加します。

サーバーの損傷やネットワークの問題のために動作できなくなります!

画像-20201211095843372

GitとSVNの主な違い

SVNは一元化されたバージョン管理システムです。バージョンライブラリは中央サーバーに一元化されています。作業するときは、自分のコンピューターを使用します。したがって、最初に中央サーバーから最新バージョンを取得してから作業する必要があります。作業が終了したら、必要な作業を中央サーバーにプッシュします。集中型バージョン管理システムが機能するには、インターネットに接続する必要があります。これには、高いネットワーク帯域幅が必要です。

画像-20201211100021596

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に取って代わるのを支援するために開発されました。

画像-20201211100148447

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
  • システム構成

画像-20201211102101403

  • ユーザー構成

画像-20201211102346429

画像-20201211102358768

Gitをインストールした後、最初に行う必要があるのは、ユーザー名と電子メールアドレスを設定することです。

すべてのGitコミットがこの情報を使用するため、これは非常に重要です。それはあなたの提出物に永久に埋め込まれます:

ここでユーザーの構成をクリアし、再構成します

#配置用户名
git config --global user.name "PengHuAnZhi"
#配置邮箱
git config --global user.email "[email protected]"

Gitの基本理論

3つの地域

Gitには、ローカルに3つの作業領域があります。作業ディレクトリ(作業ディレクトリ)、ステージング領域(ステージ/インデックス)、およびリソースライブラリ(リポジトリまたはGitディレクトリ)です。リモートgitリポジトリ(リモートディレクトリ)を追加すると、4つの作業領域に分割できます。これら4つの領域間のファイル変換関係は次のとおりです。

画像-20201211103426003

  • ワークスペース:ワークスペースは通常、プロジェクトコードを保存する場所です
  • インデックス/ステージ:変更を一時的に保存するために使用される一時的な保存領域実際には、ファイルリストに送信される情報を保存するための単なるファイルです
  • リポジトリ:ウェアハウスエリア(またはローカルウェアハウス)は、データが安全に保存される場所であり、すべてのバージョンに送信するデータが含まれています。HEADが倉庫に入れられた最新バージョンを指している場所
  • リモート:リモートウェアハウス、コードをホストするサーバー。リモートデータ交換のためのプロジェクトチーム内のコンピューターと見なすことができます。

3つのローカルエリアは、gitリポジトリのHEADが指すバージョンとまったく同じである必要があります。

画像-20201211103426003

  • ディレクトリ:Gitによって管理されるディレクトリ、つまり倉庫で、作業スペースとGit管理スペースが含まれています。
  • WorkSpace:Gitを介してバージョン管理する必要のあるディレクトリとファイル。これらのディレクトリとファイルはワークスペースを形成します。
  • .git:Git管理情報を保存するためのディレクトリで、ウェアハウスの初期化時に自動的に作成されます。
  • インデックス/ステージ:一時ストレージ領域、または送信する更新領域。リポジトリに送信する前に、すべての更新を一時ストレージ領域に配置できます。
  • ローカルリポジトリ:ローカルリポジトリ、ローカルに保存されたリポジトリ。HEADは現在の開発ブランチ(ブランチ)のみになります。
  • Stash:Hiddenは、作業状態の保存スタックであり、WorkSpaceで一時的な状態を保存/復元するために使用されます。

作業過程

gitのワークフローは一般的に次のようになります。

1.作業ディレクトリのファイルを追加および変更します。

2.バージョン管理が必要なファイルを一時ストレージ領域に配置します。

3.一時ストレージ領域のファイルをgitリポジトリに送信します。

したがって、gitによって管理されるファイルには、変更、ステージング、コミットの3つの状態があります。

Gitプロジェクトの構築

作業ディレクトリと一般的な手順を作成する

作業ディレクトリ(WorkSpace)は通常、Gitで管理できるようにするフォルダーです。プロジェクトのディレクトリにすることも、空のディレクトリにすることもできます。中国語を使用しないことをお勧めします。

毎日使用する場合は、以下の6つのコマンドを覚えておいてください。

画像-20201211103426003

地元の倉庫建設

ローカルウェアハウスを作成するには、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」ファイルを作成します。このファイルには次のルールがあります。

  1. ファイル内の空白行を無視するか、ポンド記号(#)で始まる行は無視されます。
  2. Linuxワイルドカードを使用できます。例:アスタリスク(*)は任意の数の文字を表し、疑問符(?)は文字を表し、角括弧([abc])はオプションの文字の範囲を表し、中括弧({string1、string2、...} )オプションの文字Skewerを表します。
  3. 名前の先頭に感嘆符(!)がある場合、それは例外ルールを意味し、無視されません。
  4. 名前の前がパス区切り文字(/)の場合、無視されるファイルがこのディレクトリにあり、サブディレクトリ内のファイルが無視されないことを意味します。
  5. 名前の末尾にパス区切り文字(/)がある場合は、ファイルではなく、このディレクトリの下にあるその名前のサブディレクトリが無視されることを意味します(デフォルトのファイルまたはディレクトリは無視されます)。
#为注释
*.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

画像-20201211103426003

Enterキーを最後まで押して、sshファイルを生成します

画像-20201211110158094

2.公開鍵情報をGithubアカウントに追加します

id_rsa.pubファイルの公開鍵をコピーしてGithubに追加します

画像-20201211110522881

[OK]をクリックして、保存するパスワードを入力します

画像-20201211110612105

新しい倉庫を作成する

.gitignoreファイルは、ウェアハウスを送信するときに送信されたファイルを無視します

ライセンス:オープンソースを自由に複製できるかどうか、オープンソースであるが商用目的ではないかどうかは複製できません...制限!

画像-20201211110852107

IDEAはGitを使用しています

Githubリポジトリをインポートする

画像-20201211130551645

必要なプロジェクト構成

画像-20201211130830268

画像-20201211130847033

次に、Mavenがjarパッケージを再インポートします

正常にインポートされました

画像-20201211131022836

ファイルを変更した後、送信します

画像-20201211131413221

正常に送信されました

画像-20201211131431237

次に、コミット情報を確認できます

画像-20201211191025123

押して引く

画像-20201211191025123

Gitブランチ

GITでは分岐は比較的困難です。分岐はSF映画のパラレルユニバースです。2つのパラレルユニバースが互いに干渉しなければ、今は影響がありません。しかし、ある時点で、2つの並列ユニバースがマージされ、いくつかの問題に対処する必要があります。

画像-20201211191059310

画像-20201211191059310

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]

おすすめ

転載: blog.csdn.net/qq_43509535/article/details/112360177