1. ホーム

ビデオシンクノート Mad God Talks Git

2022-02-26 05:14:21
<ブロッククオート

狂神チャットGitコース、理解しやすい、学ぶために前方注意にすべての狂気のファンを歓迎し、白人の売春を拒否し、私から開始します。

著者の許可なく複製することを禁じます。

マッドゴッドトークGit

gitについて学ぶ前に、ある概念を理解する必要があります。

バージョン管理!?

バージョン管理

バージョン管理とは

リビジョン管理とは、開発中にファイルやディレクトリ、プロジェクトに加えた変更の履歴を管理し、変更履歴を簡単に見たり、以前のバージョンを復元できるようにバックアップを取るために使われるソフトウェアエンジニアリングの手法です。

  • 地域を超えた複数人での共同開発を可能にする

  • 1つまたは複数のファイルの履歴を追跡し、文書化することができます。

  • ソースコードとドキュメントの整理と保護

  • ワークロードのカウント

  • 並列開発で、より効率的な開発

  • ソフトウェア開発の全プロセスをトラッキング

  • 開発者の負担軽減と時間短縮、ヒューマンエラーの低減を実現

簡単に言うと、複数人で行う共同開発プロジェクトを管理するための技術です。

バージョン管理が行われていない、あるいはバージョン管理自体のプロセス管理が適切に行われていない場合、ソフトウェアコードの一貫性、ソフトウェア内容の冗長性、ソフトウェアプロセスにおけるモノ、ソフトウェア開発プロセスにおける並行性、ソフトウェアソースコードのセキュリティ、ソフトウェアの統合など、ソフトウェア開発プロセスにおいて多くの問題が発生することになります。

仕事をしている人も、勉強している人も、自分でメモをとっている人も、こんな局面を経験したことがあるはずです その時、私たちはバージョン管理ツールを切実に必要としているのです!

マルチプレイヤー開発にはバージョン管理が必須!?

一般的なバージョン管理ツール

私たちが学ぶものは、今一番人気のあるものに違いありません

主流のバージョンコントローラーには、こんなものもあります。

  • ジット

  • SVN (サブバージョン)

  • CVS (同時多発版数システム)

  • VSS (Micorosoft Visual SourceSafe)です。

  • TFS (チームファウンデーションサーバー)

  • Visual Studio Online

バージョン管理製品(Perforce, Rational ClearCase, RCS (GNU Revision Control System), Serena Dimention, SVK, BitKeeper, Monotone, Bazaar, Mercurial, SourceGear Vault)は多数存在します。SourceGear Vault)、現在最も影響力があり広く使われているのがGitとSVN

バージョン管理カテゴリー

1. ローカルバージョン管理

各バージョンのスナップショットを作成したり、パッチファイルを記録したりして、ファイルの更新を毎回記録し、RCSなどの個人的な用途に使用します。

2. 集中バージョン管理SVN

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

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

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

すべてのコードはみんなのもの! セキュリティリスク

バージョン情報のリポジトリはすべて各ユーザーにローカルに同期され、すべてのバージョン履歴をローカルで見ることができ、オフラインでローカルにコミットでき、ネットワークに接続されているときだけ適切なサーバーや他のユーザーにプッシュすればいいようになっています。各ユーザーはそこにすべてのバージョンデータを保存しているため、あるユーザーのデバイスに問題がない限り、すべてのデータを復元することができますが、その分ローカルストレージのフットプリントが大きくなってしまいます。

サーバーの破損やネットワークの問題で動作しないことはありません

Git と SVN の主な違い

SVNは集中型バージョン管理システムで、リポジトリは中央のサーバーに集中的に置かれ、作業するときは自分のパソコンを使うので、まず中央のサーバーから最新版を取得して作業を行い、作業が終わったら中央のサーバーに作業内容をプッシュする必要があるのだそうです。集中管理型のバージョン管理システムは、ネットワークに接続しなければ機能せず、高いネットワーク帯域幅を必要とするシステムです。

Gitは分散型バージョン管理システムで、中央のサーバーはなく、みんなのコンピューターが完全なリポジトリとなり、バージョンはすべて自分のコンピューターにあるので、作業時にネットワークに接続する必要はありません。コラボレーションの仕組みはこうです。あなたが自分のコンピュータでファイルAを変更し、他の誰かが自分のコンピュータでファイルAを変更したとします。その時点で、それぞれの変更をお互いにプッシュするだけでお互いの変更を見ることができ、Gitはどのコードとファイルが更新されたかを直接見ることができるのです!

Gitは、今日世界で最も先進的な分散型バージョン管理システムです。

Gitの歴史について語る

人生における多くの偉大なものがそうであるように、Gitも大きな争いと革新の時代に生まれました。

Linuxカーネルのオープンソースプロジェクトには、多くの参加者がいます。Linuxカーネルのメンテナンスの大半は、パッチのコミットやアーカイブの保存といった雑務に費やされていた(1991年から2002年の間)。2002年までに、プロジェクトチーム全体が、コードを管理・維持するために、独自の分散型バージョン管理システムBitKeeperを開始しました。

Linuxコミュニティには偉い人がたくさんいる! クラッキングリサーチBitKeeper!

2005年、BitKeeperを開発した営利企業がLinuxカーネルオープンソースコミュニティとの提携を解消し、LinuxカーネルコミュニティがBitKeeperを無料で使用する権利を奪還したのです。このため、Linuxオープンソースコミュニティ(特にLinuxの生みの親であるリーナス・トーバルズ)は、BitKeeperを使っていたときの教訓をもとに、独自のバージョン管理システムを開発する必要に迫られたのです。(約2週間で!) また、Gitとして知られています!

Gitは、今日、世界で最も先進的な分散型バージョン管理システムです。

Gitはフリーでオープンソースであり、元々はBitKeeperの代わりとしてLinuxカーネルを補完するために開発されました

リーナス・ベネディクト・トーバルズ、LinuxとGitの父 1969年、フィンランド

Gitの環境設定

ソフトウェアダウンロード

git website] https://git-scm.com/ を開き、お使いのOSに対応するバージョンのgitをダウンロードしてください。

ダウンロードに時間がかかる場合は、ミラーに移動することもできます。

公式のダウンロードは遅すぎる、我々は淘宝網のミラーダウンロードを使用することができます: http://npm.taobao.org/mirrors/git-for-windows/

対応するバージョンをダウンロードしてインストールしてください

インストール:何も考えずに次のステップに進むだけです インストールしたら、すぐに使える!

Gitを起動する

インストールに成功すると、スタートメニューにGitの項目が追加され、メニューの下に3つのプログラムが表示されます。

Git Bashです。 UnixおよびLinuxスタイルのコマンドライン、最も使用されており、最も推奨されている

GitのCMDです。 Windows形式のコマンドライン

Git GUI : Git GUIは初心者にお勧めできません、まず一般的なコマンドに慣れてください。

Linux共通コマンド

これらの基本的なコマンドを、日常でもっと頻繁に使うようにしましょう

1). cd : ディレクトリを変更します。

2). cd . 前のディレクトリにフォールバックし、デフォルトのディレクトリに直接cdする

3), pwd : 現在いるディレクトリへのパスを表示します。

4)、ls(ll)。どちらもカレントディレクトリにあるすべてのファイルをリストアップしますが、ll (two ll) はより詳細にリストアップすることを除きます。

5), touch: 新しいファイルを作成する 例: touch index.js は、カレントディレクトリに新しい index.js ファイルを作成します。

6) rm: ファイルを削除します。rm index.js は index.js ファイルを削除します。

7) mkdir: 新しいディレクトリ、つまり新しいフォルダーを作成する。

8), rm -r : フォルダの削除, rm -r src src ディレクトリの削除

rm -rf / Do not try this in Linux! Delete all files from your computer!

9)、mv move file, mv index.html src index.htmlは移動したいファイル、srcは移動先のフォルダ、もちろん、これを書くときは、ファイルと移動先のフォルダが同じディレクトリにあることを確認する必要があります。

10)、reset はターミナルを再初期化し、画面をクリアにします。

11) クリア 画面をクリアします。

12)、履歴 コマンドの履歴を表示します。

13), help ヘルプを表示します。

14), exit 終了する。

15), # コメント用

Gitの設定

実は、すべての設定ファイルは、ローカルに保存されているのです!

設定の表示 git config -l

プロフィールの各レベルを表示する。

#View system config
git config --system --list
  
#View the current user (global) configuration
git config --global --list


Git関連の設定ファイルです。

1), Gitetcgitconfig : Gitインストールディレクトリのgitconfig --system システムレベル

2), C:\UsersAdministrator © .gitconfig for current logged in user only --global Global

ここでは、設定ファイルを直接編集することができ、コマンドで設定された後、ここで応答します。

ユーザー名とメールアドレスの設定(ユーザー識別、必須)

Gitをインストールしたら最初にしなければならないことは、ユーザー名とメールアドレスを設定することです。これは、すべてのGitコミットがその情報を使用するため、非常に重要です。にあるあなたのコミットに永久に埋め込まれます。

git config --global user.name "kuangshen" #name
git config --global user.email [email protected] #email


この設定は、--global オプションを渡した場合に一度だけ行う必要があります。なぜなら、Git はシステム内で行うすべての作業に対して常にその情報を使用するからです。もし特定のプロジェクトで別の名前やメールアドレスを使いたい場合は、そのプロジェクトで --global オプションをつけずにコマンドを実行します。要するに、--global はグローバルなものであり、プロジェクトに特化したものではありません。

Gitの基礎理論(重要)

3つのリージョン

Gitには、3つのローカルな作業領域があります。作業ディレクトリ、ステージング/インデックス、そして、リポジトリまたはGitディレクトリです。そこにリモートのgitリポジトリ(Remote Directory)を加えると、4つの作業領域ができることになります。この4つのエリア間でのファイルの変換は以下のようになります。

<イグ

  • ワークスペース。ワークスペースは、通常プロジェクトのコードを格納する場所です。

  • インデックス / ステージ:ステージングエリア、変更を一時的に保存するために使用され、実際にはファイルリストへの今後のコミットに関する情報を保持するファイルに過ぎません。

  • リポジトリ。リポジトリ領域(またはローカルリポジトリ)。データを安全に保存できる場所であり、すべてのバージョンへのコミットが格納されています。HEADはリポジトリに投入された最新バージョンを指す場所

  • リモート リモートリポジトリ(コードをホストするサーバー)は、単純にリモートデータ交換のためのプロジェクトグループ内のコンピュータと考えることができる

3つのローカルリージョンは、まさにgitリポジトリのHEADで指されるバージョンでなければなりません。

  • ディレクトリ。Gitで管理されるディレクトリ、あるいはリポジトリで、私たちのワークスペースとGitの管理空間を含みます。

  • ワークスペース。ワークスペースを構成する、Gitを通じてバージョン管理する必要のあるディレクトリとファイル。

  • .git。Gitの管理情報を保持するディレクトリで、リポジトリの初期化時に自動的に作成されます。

  • インデックス/ステージ。ステージングエリア、または保留中のコミットで、レポにコミットする前にすべての更新を置くことができます。

  • ローカルレポ。ローカルリポジトリ、ローカルに保存されるリポジトリ。HEADは現在の開発ブランチ(枝)になるだけです。

  • Stash: 隠された、WorkSpaceの一時的な状態を保存/復元するための作業状態保存スタックです。

ワークフロー

gitのワークフローは一般的に以下のようなものです。

1. 作業ディレクトリにファイルを追加、修正する。

2. バージョン管理が必要なファイルをステージングエリアに配置する。

3. ステージングエリアのファイルをgitリポジトリにコミットする。

つまり、gitはファイルを3つのステータス(modified, staged, committed)で管理しています。

Gitプロジェクトのビルド

作業ディレクトリの作成と共通コマンド

作業ディレクトリ(WorkSpace)は、一般的にGitに管理を手伝ってもらいたいフォルダで、プロジェクトのディレクトリか空のディレクトリのどちらかで、中国語は推奨されません。

日常的に使うには、次の6つのコマンドを覚えておけばよい。

ローカルリポジトリのビルド

ローカルリポジトリを作成する方法は2つあります。1つは完全に新しいリポジトリを作成することで、もう1つはリモートリポジトリをクローンすることです。

1. 全く新しいリポジトリを作成するには、GITで管理されているプロジェクトのルートで実行する必要があります。

# Create a new Git codebase in the current directory
$ git init


2. 実行後、プロジェクトディレクトリに.gitディレクトリが一つ増えただけで、バージョン管理などの情報はすべてこのディレクトリにあることがわかります。

リモートリポジトリのクローン作成

1. もう一つの方法は、リモートディレクトリをクローンすることです。これは、リモートサーバー上のリポジトリをローカルに完全にミラーリングすることになるからです!

# Clone a project and its entire code history (version information)
$ git clone [url] # https://gitee.com/kuangstudy/openclass.git


2. giteeやgithubにアクセスして、テストをクローンしてみよう!

Gitファイル操作

ファイルの4つの状態

バージョン管理とは、ファイルのバージョンを管理することです。ファイルに変更を加えたり、コミットなどを行うには、まずファイルが現在どのような状態になっているかを知る必要があります。そうしないと、今コミットしたくないファイルをコミットしてしまったり、コミットしたいファイルがコミットされていなかったりする可能性があります。

  • Untracked(未追跡)。追跡されていない、ファイルはフォルダ内にあるが、git リポジトリに追加されておらず、バージョンコントロールに参加していない。ステータスは、git add によって Staged に変更されます。

  • Unmodify。リポジトリにあるファイルのスナップショットは、フォルダにあるものと全く同じであることを意味します。このタイプのファイルは、修正されてModifiedになった場合、2つの方法のどちらかになります。git rm を使ってリポジトリから移動させると、Untracked(未追跡)になります。

  • 修正済み。ファイルが変更されただけで、他のアクションは実行されていません。このファイルには、ステージされた状態になるための git add と、変更を破棄して未修正の状態に戻るための git checkout の二通りの行き先があります。git checkout は、リポジトリからファイルを取得して現在の変更を上書きします !

  • ステージングされたもの。一時的な状態。git commit を実行すると、変更内容がリポジトリに同期され、リポジトリのファイルとローカルのファイルが再び同じになり、ファイルは Unmodify 状態になります。git reset HEAD filename を実行すると、ステージングが解除され、ファイルの状態は Modified になります。

ファイルのステータスを表示する

ファイルの状態が4つあると書いてありますが、これは以下のコマンドで見ることができます。

# View the status of a given file
git status [filename]


#View the status of all files
git status


# git add .                  Add all files to the staging area
# git commit -m "message" commit the contents of the staging area to the local repository -m commit message


無視するファイル

データベースファイル、一時ファイル、デザインファイルなど、特定のファイルをバージョンコントロールに含めたくない場合があります。

ホームディレクトリに ".gitignore" ファイルを作成し、このファイルには以下のルールがあります。

  1. 無視ファイル内の空白行やウェル記号(#)で始まる行は無視されます。

  2. Linuxのワイルドカードを使用することができます。例えば、アスタリスク(*)は任意の文字数を、クエスチョンマーク(?)は1文字を、角括弧([abc])は任意の文字範囲を、中括弧( {string1,string2,... })は任意の文字列を表す、等です。

  3. 名前の前に例外規則を示すエクスクラメーションマーク(!)が付いている場合は、無視されません。

  4. 名前の前にパス区切り文字(/)がある場合、無視するファイルがこのディレクトリにあることを意味し、サブディレクトリにあるファイルは無視されません。

  5. 名前の前にパス区切り文字(/)がある場合は、無視するファイルがファイルではなく、このディレクトリ内の名前のサブディレクトリにあることを意味します(デフォルトでは、ファイルまたはディレクトリのどちらかが無視されます)。

# for comments
*.txt #Ignore all files ending in .txt, so that uploads will not be selected!
!lib.txt #except for lib.txt
/temp #Only ignore TODO files in the project root directory, not other directories temp
build/ #Ignore all files in the build/ directory
doc/*.txt #Of doc/notes.txt will be ignored, but not doc/server/arch.txt


Code Cloud の使用

githubは壁があり遅いので、中国ではgiteeを使うのが一般的で、社内に独自のgitlabサーバを構築することもあります。

これは実は、今後就職活動をする人にとっても重要な情報になり得るのです

1. コードクラウドに登録・ログインして個人情報を充実させる

2、ローカルバインディングSSH公開鍵を設定し、パスワード不要のログインを実現する! (パスワード不要のログイン、このステップはかなり重要です。コードクラウドはリモートリポジトリですが、私たちは通常ローカルリポジトリで作業しています!)

# Go to the C:\Users\Administrator\.ssh directory
# Generate the public key
ssh-keygen


<イグ

3. 公開鍵情報公開鍵をコードクラウドのアカウントに追加するだけ!?

4. Code Cloud を使って自分のリポジトリを作ろう!

ライセンス:オープンソースは自由に複製可能か、オープンソースだが商業的に利用できないか、複製できないか、...。  制限事項!

ローカルにクローン!

IDEAにおけるGitの統合

1. 新しいプロジェクトを作成し、gitをバインドします。

発想の転換に注目

2. ファイルを修正し、IDEAでgitを操作する。

  • ステージングエリアに追加

  • コミット

  • リモートリポジトリにプッシュする

3. テストをコミットする

これらはすべて一人での作業です

学び方が一番大事! 学び方を学ぼう! 私の授業では、コンセプトやアイデアを学ぶための指導(学び方)をすることが多いのですが

方法があれば、芸術はない、芸術はまだ求めることができる。方法があれば、方法はない、芸術で止まってしまうのです

真の教えとは、人に釣りを教えることだ!

説明 GITブランチ

GITではブランチが比較的難しいです。ブランチはSF映画に出てくるパラレルワールドのようなもので、2つのパラレルワールドが互いに干渉しなければ、今更どうということはないでしょう。しかし、ある時点で2つのパラレルワールドが合体してしまい、いくつかの問題が発生します

gitブランチでの共通コマンド。

# List all local branches
git branch


# List all remote branches
git branch -r


# Create a new branch, but it stays on the current branch
git branch [branch-name]


# Create a new branch and switch to it
git checkout -b [branch]


# Merge the specified branch into the current branch
$ git merge [branch]


# Delete the branch
$ git branch -d [branch-name]


# Delete the remote branch
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]


IDEAでの操作

マージブランチで同じファイルを変更すると、競合が発生します。解決策は、競合するファイルを変更して再コミットすることです 彼のコードを残すか、あなたのコードを残すか、どちらかを選んでください!

master masterブランチは非常に安定している必要があり、新しいバージョンをリリースするために使用されます。それに対する作業は一般的に許可されていません。作業は一般的に新しく作成されたdevブランチで行われ、その作業を行った後、例えばリリース時に、あるいはdevブランチのコードが安定したときにmaster masterブランチにマージすることができます。

宿題:仲間を見つけて、一緒にリモートリポジトリを構築し、Gitの練習をしましょう。

1. Gitを難しく考えないで、仕事で使う練習をすれば自然にできるようになるはずです

2、Gitの学習も非常に多い、私のGitチュートリアルを見た後、もっと考えて自分のブログにまとめてください

ビデオチュートリアルは同時に更新されますので、この時間を確認してください。