Git の学習と Git の使用

ビデオに基づいて編成:シリコンバレーでの Git の開始から習得までの完全なチュートリアル セット (GitHub\Gitee Code Cloud\GitLab をカバー)
記事は次の場所にアーカイブされています: https://www.yuque.com/u27599042/qy17ty


Git の概要

Git とは

  • Git は、無料のオープンソースの分散バージョン管理システムです。
  • Git は複数人によるコラボレーション プロジェクトのコード管理に便利です

バージョン管理

  • バージョン管理とは、ファイルの変更記録を記録し、ファイルの内容の変更を記録することで、将来的に特定のバージョンのリビジョン ステータスを確認したり、ファイルの履歴バージョンの表示や切り替えを容易にしたりできるようにすることです。

一元的なバージョン管理

  • ファイル バージョンを一元管理するため、集中バージョン管理ツールにはサーバーが 1 台だけあります。すべてのファイルのすべての履歴バージョンがこのサーバーに保存されます。コラボレーション ワーカーはクライアント経由でサーバーに接続し、変更する最新のファイルを取り出します。ファイル変更のマージ
  • 利点: 管理者は各開発者の権限を簡単に制御し、集中バージョン管理システムを管理できます。
  • 短所: サーバーがダウンすると、誰も更新を送信できなくなり、共同作業ができなくなります。

分散バージョン管理

  • 分散バージョン管理には、コード ホスティング センターがあります。コード ホスティング センター (リモート ライブラリ) は、すべてのファイルのホスティングと管理を担当します。リモート ライブラリは、分散バージョン管理のコード ライブラリです。すべての開発者がリモート ライブラリのクローンを作成します。リモート ライブラリと同じコード ライブラリがローカルに存在します。各開発者はローカル コード ライブラリ内のファイルを変更します。変更が完了すると、ローカル ライブラリはリモート ライブラリにプッシュされます。リモート ライブラリ ライブラリ内ファイルのホスティングと管理用
  • 分散バージョン管理システムと集中バージョン管理システム:
    • 各開発者のバージョン管理はローカルで行われるため、サーバーが切断されていても開発が可能で、変更完了後はリモートライブラリにプッシュしてマージするだけで済みます。
    • また、各クライアントは履歴記録を含む完全なプロジェクト全体を保存するため、より安全であり、障害が発生した場合は、後で他のクライアントのローカル ウェアハウスを使用して復元できます。

Gitの動作メカニズム

画像.png

コードホスティングセンター

  • コード ホスティング センターは、ネットワーク サーバーをベースとしたリモート コード ウェアハウスであり、一般に単にリモート ライブラリと呼ばれます。
  • コード ホスティング センター (リモート ライブラリ) の分類:
    • LAN コード ホスティング センター
      • GitLab
    • インターネット コード ホスティング センター
      • GitHub (外部ネットワーク)
      • Giteeコードクラウド(国内サイト)

Gitのダウンロードとインストール

Gitのダウンロード

Gitのインストール


Gitコマンド

Git の Bash コマンドラインで Linux コマンドを直接使用できます。

ユーザー署名を設定する

  • ユーザー署名の役割は、ファイルを変更するさまざまなオペレーターの身元を区別することです。
  • ユーザーの署名情報は、各ファイル投稿履歴バージョンの投稿情報で確認でき、誰が投稿したかを確認できます。
  • Git のインストールが完了した後、ユーザー署名を設定する必要があるのは 1 回だけです。ユーザー署名を設定する必要があります。ユーザー署名を設定しないと、コードを送信するときにエラーが報告されます。
  • ユーザー署名は、将来 GitHub (または他のコード ホスティング センター) にログインするために使用するアカウントとは関係がないことに注意してください。ユーザー署名を設定する目的は、この送信を行ったユーザーを確認することです。
# 设置用户名
git config --global user.name 用户名
# 设置用户邮箱
# 邮箱可以不用真实存在,Git 不会验证邮箱是否真实存在,格式正确即可。
git config --global user.email 邮箱
  • 画像.png

ユーザーの署名を表示する

  • Windows ローカル ユーザーのホーム ディレクトリに移動して、ユーザーの署名を表示します。C:/ => 用户 => 当前登录Windows的用户对应的文件夹 => .gitconfig
  • 画像.png
  • 画像.png

ローカルライブラリを初期化する

  • ローカル ライブラリを初期化し、Git にプロジェクトの管理権限を取得させ、Git にプロジェクトを管理させます
git init
  • 画像.png
  • 生成された.gitディレクトリはデフォルトでは非表示になる ことに注意してください
    • Windows の隠しディレクトリの表示
    • 5052a833f0b84b16a9e0a461474e8b87.png

地元の図書館のステータスを表示する

git status
  • a94652b39bf24295b0c66f72c5988f09.png
  • master はマスター ブランチです。デフォルトでは、マスター ブランチは 1 つだけ (マスター/メイン) です。
  • 新しいファイルを作成して再度表示する
  • 699f1721bc7d4b709dd35112dc9941ca.png

ローカルブランチの名前を変更

git branch -m 旧分支名 新分支名
  • 画像.png

ローカル ファイルをステージング領域に追加する

指定されたファイルをステージング領域に追加します

# 将某个指定文件添加暂存区
git add 文件名

# 将多个指定文件添加暂存区
git add 文件名1 文件名2 文件名3 ...
  • 34e41b63b65e479ba46fe8b628be1567.png
  • ファイルがステージング領域に追加された後にファイルのステータスを確認する
  • a6a1062df609463cbf8fc122b91259d6.png

指定したディレクトリとそのファイルを一時記憶領域に追加します

git add 目录
# 提交当前目录及其下所有被删除、被修改和新增的文件到数据暂存区
git add .
  • 現在、a ディレクトリに txt.txt ファイルが作成され、a/b ディレクトリにも txt.txt ファイルが作成され、a/b/c ディレクトリにも txt.txt ファイルが作成されます。
  • 画像.png

すべてのファイルをステージング領域に追加します

git add *

  • 削除されたファイルを除く、すべての変更されたファイルと新しいファイルをデータ ステージング領域に送信します。
  • 現在存在するすべてのファイルをステージング領域に追加します
git add *
  • 画像.png
  • 画像.png

git add -u および git add --update

  • 新しく作成されたファイルを除く、すべての削除されたファイルと変更されたファイルをデータ ステージング領域に送信します。
git add -u
git add --update
  • 画像.png

git add -A および git add --all

  • 削除、変更、および新しく追加されたすべてのファイルをデータ ステージング領域に送信します
git add -A
git add --all
  • 画像.png

特定のタイプのファイルをステージング領域に追加します

# 添加当前目录下所有 html 文件到暂存区
git add *.html
  • 画像.png

ローカル ファイルをローカル ライブラリに送信する

一時ストレージ領域のすべての内容を送信します

git commit
  • 画像.png

指定したファイルを送信する

  • ワークスペースやステージング領域など、追跡されたファイルを送信用に指定できます
git commit 文件名
git commit 文件名1 文件名2 ...
  • 画像.png

ファイルを送信し、今回の送信説明情報を指定します。

  • 上記のコマンドは、vi コマンド インターフェイスに入り、今回の送信説明情報を入力します。
# 提交文件的同时指定本次的提交描述信息
git commit 文件名... -m <本次提交描述信息>
  • 画像.png

追跡されたすべてのファイルの変更をコミットする

git commit -am <本次提交描述信息>

# 相当于执行
# 将已跟踪的被删除和修改的文件提交到暂存区
git add -u
# 将暂存区中的文件提交到本地库
git commit -m <message>
  • 画像.png
  • 画像.png

ファイルの削除

rm

  • Linux でワークスペース ファイルを削除するコマンドは、削除操作を一時記憶領域に送信しません。
  • ローカル ライブラリのファイル バージョン レコードは、ファイルが削除されていないことを示しています。この削除操作は、一時記憶領域に追加して送信する必要があります。ファイルの現在の履歴バージョンは、削除されたものとしてローカル ライブラリに記録されます。
rm 文件名
  • 画像.png

git rm ファイル名 [–cache | --force | -f]

  • ワークスペース ファイルを削除し、一時記憶領域に削除操作を送信します。
  • 現在削除しようとしているファイルが変更されており、変更操作が送信されていない場合、このコマンドを実行してファイルを削除するとエラーが報告されます。
  • 画像.png
  • この時点でこのファイルを削除する必要がある場合は、最初に変更操作を送信してからファイルを削除できます。
  • または、ファイルの強制削除を実行します。git rm -f 文件名またはgit rm -force 文件名、強制削除が実行された場合、以前に送信されていない変更操作はファイルの履歴バージョンを形成しません。変更操作は上書きされ、削除操作によって置き換えられます。強制削除すると、ワークスペース ファイルが削除されます。
  • これを実行して、ファイルが Git によって追跡されるのを防ぐこともできますgit rm --cache 文件名。ワークスペース ファイルはまだ存在するため、ファイルを削除できます。
git rm -f 文件名
git rm --force 文件名

# 从缓存中删除该文件
# 使文件不被 Git 追踪
git rm --cache 文件名
  • 画像.png
  • 画像.png
  • 画像.png
  • 画像.png

バージョン情報を表示する

リフレクに行きます

  • 要約されたリリース情報を表示する
git reflog
  • 画像.png

git ログ

  • 詳細なバージョン情報を表示する
git log
  • 画像.png

バージョンシャトル

  • 指定したバージョンにリセットする
git reset 版本号
  • 最初のコミットの状態。後続のインスタンスはこのバージョンに戻ります。
  • 画像.png

-難しい

  • 指定されたバージョンにシャトルし、ステージング領域とワークスペースをクリアします
  • シャトル前のステータス:
  • 画像.png
  • 画像.png
  • 5.txt は追跡されない、つまり Git によって管理されていないため、何の影響もありませんが、Git によって管理されていたワークスペースとステージング領域は Git によって消去されます。
    • ワークスペースに送信された 2.txt 3.txt、およびステージング領域に送信された 4.txt はすべてクリアされます。
  • 画像.png
  • 画像.png

-柔らかい

  • 指定されたバージョンにシャトルしますが、ワークスペースまたはステージング領域には変更は加えられません。HEAD (現在のバージョンのポインタ) とシャトル先のコミット バージョンとの間のすべての変更は、ステージング領域に送信されます。と作業領域はクリアされません。つまり、シャトルの 2 つのバージョン間の差異がステージング エリアに送信されます。
  • シャトル前のステータス:
  • 画像.png
  • 画像.png
  • シャトル後のステータス:
  • 画像.png
  • 画像.png

–混合

  • このオプションはデフォルトです
  • 指定されたバージョンにシャトルされ、ワー​​クスペースは変更されないため、HEAD (現在のバージョンへのポインター) からシャトル先のコミット バージョンまでのすべての変更がワークスペースに保存されます。つまり、ステージング領域はクリアされません。 、変更済みとしてマークされ、ステージング領域の内容がクリアされます。
  • シャトル前のステータス:
  • 画像.png
  • 画像.png
  • シャトル後のステータス:
  • 画像.png
  • 画像.png

Git ブランチ

支店概要

  • プロジェクト管理とバージョン管理のプロセスでは、プロジェクトがユーザーにサービスを提供し続けることができるようにすると同時に、プロジェクト開発で複数のタスクを推進できるようにするために、タスクごとに個別のブランチを作成し、メインブランチはユーザーにサービスを提供し続けるために使用され、他のブランチはプロジェクト タスクの開発に使用されます。ブランチを利用することで、各タスクの開発実装をメインの開発ラインから切り離すことができ、各ブランチを開発する際にメインラインのブランチの動作に影響を与えることはありません。
  • ブランチは、メイン ブランチの別のコピーとして理解できます。(ブランチの最下層は実際にはポインタへの参照です)
  • c903967cb77444409925b977bdfcc123.png

分岐のメリット

  1. 複数の機能の開発を同時に並行して推進し、開発効率を向上します。
  2. 各ブランチの開発プロセス中に、1 つのブランチの開発が失敗しても、他のブランチには影響がありません。失敗したブランチを削除して、もう一度やり直してください。

ブランチを表示する

git branch -v
  • このコマンドを使用すると、現在のブランチをすべて表示できます。* 記号は現在のブランチを表します。
  • c268705a0bb84ee2b76967220fe74374.png

ブランチを作成する

git branch 分支名
  • 新しく作成されたブランチは、master ブランチの内容をコピーして、master ブランチのコピーを形成します。
  • 32b2553b15574a97b49058e99f2a73cd.png

分岐を切り替える

git checkout 分支名
  • b61fd6cb5d0e414685c30fd22d66c16f.png
  • 2eda32a06d47474096c54e1ef08542f0.png

ブランチをマージする

git merge 分支名
  • このコマンドは、指定されたブランチを現在のブランチにマージするために使用されます。
  • 他のブランチをメイン ブランチにマージしたい場合は、メイン ブランチでマージ ブランチ コマンドを実行する必要があります。

通常のマージ

  • hot-fix ブランチはコードを変更しましたが、master ブランチはコードを変更していません。現時点では、hot-fix ブランチを mater ブランチにマージするのは通常のマージです。
  • 通常のマージ、つまり、現在のブランチにマージされるブランチ内の変更は、現在のブランチ内の変更と競合しません。
  • 2e1c1a3e9ffd45f48da5382bcc9d0513.png

競合のマージ

  • ブランチをマージする場合、2 つのブランチには、同じファイル内の同じ場所に 2 つの完全に異なる変更セットがあります。つまり、ブランチをマージすると競合が送信されます。Git は、変更をマージするためにどのブランチを使用するかを決定できません。変更をどのブランチにマージする必要がありますか?
  • master ブランチで変更してコミットします。
  • d80bfae49e9c4abfbd1884741e3e338c.png
  • ホットフィックス ブランチを変更して送信します。
  • df70383da40c4b90a17c34e79750a142.png
  • ブランチをマージします。
  • 9e0a2a151c2a4c018cd593ea34758b90.png
  • ブランチを手動でマージします。
  • b1c297b5ce2b4b2bb703866154fb569c.png
  • ファイルを手動でマージし、ファイルを手動で開いて編集し、ファイルの変更を手動でマージし、競合する部分でどのブランチの変更を保持する必要があるかを手動で選択します。
  • 088cf98d6cce4d08a7d19ce7b573bdec.png
  • c0a241f3c59b4f9a835ca033f4231b02.png
  • 変更を保存した後、手動で競合がマージされたファイルをステージング領域に追加し、変更を送信する必要があります。
    • 注: 現時点では、両方のブランチが同じファイルを変更しているため、 git commit コマンドを使用するときにファイル名を使用することはできません。ファイル名を使用すると、エラーが報告されます。Git は、どのブランチに変更を送信すればよいかわかりません。 。
    • 他のブランチの内容を現在のブランチにマージします。他のブランチの内容は変更されません。マージ前の内容のままです。現在のブランチのみが変更されます(他のブランチの内容を現在のブランチにマージします)。
  • 5f194ce6195548d4900b77d743eebd7a.png
  • 39cee86692284ccabc025eb9ce32a131.png

.git ファイル内の現在のブランチを表示する

画像.png
画像.png

.git ファイル内の現在のブランチのバージョンを表示する

  • HEADファイル内のディレクトリに基づいて表示します。
  • 画像.png
  • 画像.png
  • 画像.png

Gitリモート倉庫運用(GitHub)

GitHub がリモート リポジトリを作成する


ウェアハウスが作成されます。

遠隔倉庫業務

コマンド名 効果
git リモート -v 現在のリモート アドレス エイリアスをすべて表示する
git Remote エイリアス リモート アドレスを追加 エイリアスを付ける
git Push エイリアス ブランチ ローカル ブランチのコンテンツをリモート リポジトリにプッシュします
git clone リモート アドレス リモートウェアハウスのコンテンツのクローンをローカルウェアハウスに作成します
git pull リモート ライブラリ アドレス エイリアス リモート ブランチ名 ブランチの最新のコンテンツをリモート ウェアハウスからプルダウンし、現在のローカル ブランチと直接マージします。

現在のローカル リモート ウェアハウスのアドレス エイリアスをすべて表示する

git remote -v

リモート リポジトリ アドレスのエイリアスを作成する

リモート ウェアハウスのエイリアスを作成した後、リモート ウェアハウスからコードをプルしたり、リモート ウェアハウスにコードをプッシュしたりする後続の操作に、そのエイリアスを直接使用できます。

git remote add 别名 远程地址

ローカル ライブラリをリモート ウェアハウスにプッシュする

ローカル ウェアハウスをリモート ウェアハウスにプッシュする場合は、リモート ウェアハウスへのリンクまたはローカル エイリアスを指定し、プッシュ先のリモート ウェアハウスとプッシュ先のリモート ウェアハウスのブランチを指定する必要があります。

git push 别名或远程仓库链接 分支





リモート ライブラリをローカル ライブラリにプルします

リモート ライブラリ コードをローカルにプルする場合は、プルするリモート ウェアハウスと、プルするリモート ウェアハウスのブランチを指定する必要があります。

git pull 远程库地址别名或链接 远程分支名

リモート ライブラリをローカル ライブラリにプルします。

リモート リポジトリのクローンをローカルに作成する

リモート ウェアハウスをローカルの場所に複製する場合、アカウントにログインする必要はなく、リモート ウェアハウスのアドレスを使用するだけでローカルの場所に複製できます。

git clone 远程地址

リモートウェアハウスdemo1のクローンをローカルE://git-cloneに作成します。


クローンは次の操作を実行します。
1. コードをプルします
。 2. ローカル ウェアハウスを初期化します
。 3. クローンされたリモート ウェアハウスのエイリアスを自動的に作成します (デフォルトはオリジン)。

チームに招待する





次に、招待された人に招待状を送信し、招待された人は github アカウントにログインした後、招待リンクを開いて招待に同意します。

同意の上、コラボレーションに参加してください

招待された人はコードをリモート リポジトリにプッシュできます。

Windows 資格情報マネージャー


Windows 認証情報に保存された GitHub 認証情報。Git がローカル ウェアハウスからリモート ウェアハウスにプッシュおよびプルするときに使用されます。

ssh パスワード不要のログイン

コンピュータの Windows システム上の現在のユーザーのホーム ディレクトリを入力し、.ssh ディレクトリを削除します。

Git bash コマンド ライン ウィンドウを開き、コマンドを実行して .ssh キー ディレクトリを再生成します。

# 使用如下命令生成 ssh 密钥
# -t 指明使用的加密算法为 rsa
# -C 指明当前生成的密钥是针对于哪个Github账号
ssh-keygen -t rsa -C 创建Github账号使用的邮箱

画像.png


公開キーを表示してコピーし、Github アカウントに設定されている公開キーと現在所有している一致する秘密キーを使用して、GitHub アカウントを現在のホストとペアリングします。




現在のコンピュータ クライアントが SSH 接続を使用してリモート ウェアハウスにプッシュおよびプルする場合、ログインする必要はありません。


Githubリポジトリ内のファイルステータス

リモート リポジトリをローカルにプルする


おすすめ

転載: blog.csdn.net/m0_53022813/article/details/132449343