2020バージョンのgitチュートリアル(テキストバージョン+ビデオバージョン)

ここに写真の説明を挿入

gitを知らない場合、あなたは優れた開発者であるとどのように言えますか?gitはほんの数コマンドだと考える人もいますか?ただし、作業ではgitを理解していないため、自分自身とチーム全体を非効率的なモードにします。したがって、gitの原則と一般的なバージョン管理の問題の解決策を理解するだけでなく、 gitチームワークのワークフロー。
今日、私たちの開発のほとんどすべてがオープンソースプロジェクトから切り離せないものであり、githubは世界最大のオープンソースプロジェクト管理ベースです。世界最大の同性の出会い系サイトと呼ばれることもあるので、この魔法のウェブサイトでオープンソースプロジェクトを管理する方法はい、どうすればオープンソースプロジェクトの買収や開発に参加できますか?

Githubはオープンソースプロジェクトの管理ですが、大手企業はどのように独自のプロジェクトを管理していますか?これはgitlabに言及する必要があるので、gitlabを構築する方法、権限を管理する方法、コード
レビュー、CI / CD、知識コンテンツ管理などのプロジェクトを管理する方法は

この記事で回答されます。

****

1.Gitの基本

**
1.1LinuxへのGitの
インストールインストールコマンドは次のとおりです。

sudo apt-get install git

インストールが完了したら、「git --version」と入力して、gitバージョンを表示します。「gitversion xxx」が表示されれば、インストールは成功です。
逸脱:古いDebianまたはUbuntu Linuxの場合、GIT(GNU Interactive Tools)と呼ばれるソフトウェアがあったため、コマンドをsudo apt-get install git-coreに変更する必要がありますが、Gitはgit-coreとしか呼び出すことができません。Gitは非常に有名であるため、GNU Interactive Toolsはgnuitに変更され、git-coreは正式にgitに変更されました。
別のLinuxバージョンの場合は、ソースコードから直接インストールできます。最初にGit公式Webサイトからソースコードをダウンロードし、次に解凍してから、次のように入力します。./config、make、sudo makeinstallこれらのコマンドをインストールしてインストールします。

1.2 Mac OS XへのGitのインストール
開発にMacを使用している場合、Gitをインストールする方法は2つあります。
1つは、homebrewをインストールしてから、homebrewを介してGitをインストールすることです。具体的な方法については、homebrewのドキュメント(http://brew.sh/)を参照してください。
2番目の方法はより簡単で、推奨される方法はAppStoreから直接Xcodeをインストールすることです。XcodeはGitを統合しますが、デフォルトではインストールされません。Xcodeを実行し、メニューの[Xcode]-> [Preferences]を選択して、ポップアップウィンドウで見つける必要があります。 「ダウンロード」、「コマンドラインツール」を選択し、「インストール」をクリックしてインストールを完了します。
ここに写真の説明を挿入

1.3 WindowsへのGitのインストール
誰もがWindowsシステムを使用していると言うので、gitは最初にLinuxシステムで開発および実行され、その後徐々にWindowsに移植されました。
git公式ウェブサイトのダウンロードページ(https://git-scm.com/downloads)にアクセスしてGit-2.19.1-64-bit.exeをダウンロードし、インストールします。インストールが完了すると、gitbashツールがデスクトップに作成されます。デスクトップでマウスの右ボタンをクリックすると、「gitguihere」と「gitbashhere」の2つのメニュー項目も右クリックメニューに表示されます。

1.4 git環境
構成Gitをインストールした後、最初にすべきことは、ユーザー名と電子メールアドレスを設定することです。これは非常に重要です。すべてのGitコミットがこの情報を使用し、各コミットに書き込まれ、変更できないためです。

$ git config --global user.name "lizhiyong"

$ git config --global user.email [email protected]

繰り返しますが、-globalオプションを使用する場合、Gitは後でシステムで何をしてもその情報を使用するため、このコマンドを1回実行するだけで済みます。特定のプロジェクトに別のユーザー名と電子メールアドレスを使用する場合は、そのプロジェクトディレクトリで--globalオプションを指定せずにコマンドを実行して構成できます。
多くのGUIツールは、この情報を初めて実行するときに構成するのに役立ちます。
git config --listを使用して、すべてのgit構成を表示することもできます。

1.5ヘルプの取得
Gitの使用中にヘルプが必要な場合、Gitコマンドのマニュアルを見つけるには3つの方法があります。

$ git help <verb>

$ git <verb> --help

$ man git-<verb>

たとえば、configコマンドのマニュアルを入手するには、次のコマンドを実行します。

$ git help config

もちろん、問題が発生した場合は、公式のgitドキュメントを確認することもできます。
https://git-scm.com/book/zh/v2

チュートリアルのビデオバージョンが[緊急事態への対処]

VX公式アカウントFollowZero VoiceAcademyに更新されました

2.GITで一般的に使用されるコマンド

2.1リポジトリの作成リポジトリ
とは何ですか?リポジトリはウェアハウスとも呼ばれ、英語名はリポジトリです。単にディレクトリとして理解できます。このディレクトリ内のすべてのファイルはGitで管理できます。Gitは各ファイルの変更と削除を追跡できるため、いつでも追跡できます。履歴、または将来のある時点での「復元」。
したがって、リポジトリを作成するのは非常に簡単です。gitinitコマンドを使用して、新しいgitリポジトリを作成します。これは、既存のバージョン制御されていないプロジェクトをGitリポジトリに変換するため、または空の新しいリポジトリを作成するために使用されます。ほとんどのGitコマンドは、初期化されていないリポジトリでは使用できないため、これが新しいプロジェクトを実行する最初のコマンドです。
git initコマンドを実行すると、プロジェクトのルートディレクトリに新しい.gitディレクトリが作成されます。このディレクトリには、プロジェクトに必要なすべてのメタデータが含まれています。.gitディレクトリを除いて、既存のプロジェクトは変更されません(SVNと同様に、Gitはすべてのサブディレクトリに.gitディレクトリを強制しません)。
例えば:

$ mkdir learngit
$ cd learngit
$ git init

pwdコマンドは、現在のディレクトリを表示するために使用されます。私のMacでは、このリポジトリは/ Users / michael / learngitにあります。
Windowsシステムを使用している場合、あらゆる種類の不可解な問題を回避するために、ディレクトリ名(親ディレクトリを含む)に中国語が含まれていないことを確認してください。
2番目のステップは、このディレクトリを、Gitがgitinitコマンドを使用して管理できるウェアハウスに変換することです。

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

Gitは即座にリポジトリを構築し、それが空のGitリポジトリであることを通知します。注意深い読者は、現在のディレクトリに追加の.gitディレクトリがあることを見つけることができます。このディレクトリはGitがリポジトリを追跡および管理するために使用します。このディレクトリ内のファイルを手動で変更しないでください。変更すると、変更が混乱し、Gitリポジトリが破壊されます。
.gitディレクトリが表示されない場合は、このディレクトリがデフォルトで非表示になっているためであり、ls-ahコマンドで表示できます。
空のディレクトリにGitリポジトリを作成する必要はありません。すでに何かがあるディレクトリを選択することもできます。ただし、開発中の企業プロジェクトを使用してGitを学習することはお勧めしません。使用しない場合、結果について責任を負いません。

ベアウェアハウスの作成
最初に、ディレクトリをGitウェアハウスとして選択します。これは、/ srv / sample.gitであると想定して、/ srvディレクトリに次のコマンドを入力します。

$ sudo git init --bare sample.git

-bareを使用すると、ベアウェアハウスが作成されます。ベアウェアハウスにはワークスペースがありません。サーバー上のGitウェアハウスは純粋に共有用であるため、ユーザーはサーバーに直接ログインしてワークスペースを変更することはできません。通常、サーバー上のGitウェアハウスはにあります。 gitの終わり。次に、所有者をgitに変更します。
$ sudo chown -R git:git sample.git

裸でない倉庫へのファイルの追加
まず、すべてのバージョン制御システムが実際に追跡できるのは、TXTファイル、Webページ、すべてのプログラムコードなどのテキストファイルへの変更のみであることを明確にしておきます。Gitも例外ではありません。バージョン制御システムは、5行目に「Linux」という単語を追加したり、8行目に「Windows」という単語を削除したりするなど、すべての変更を通知できます。写真やビデオのバイナリファイルもバージョンコントロールシステムで管理できますが、ファイルの変更を追跡することはできません。バイナリファイルの各変更をつなぎ合わせることができるだけです。つまり、写真が100KBから120KBに変更されたことを知るだけですが、最終的には何が変更されたのか、バージョン制御システムは知りませんし、知ることもできません。
残念ながら、MicrosoftのWord形式はバイナリ形式であるため、バージョン制御システムはWordファイルへの変更を追跡できません。前の例はデモンストレーション用です。バージョン制御システムを使用する場合は、プレーンテキストで記述する必要があります。ファイル。
たとえば、テキストはエンコードされているため、中国語では一般的にGBKエンコードが使用され、日本語ではShift_JISエンコードが使用されます。歴史的な問題がない場合は、標準のUTF-8エンコードを使用することを強くお勧めします。すべての言語で同じエンコードを使用します。競合はなく、すべてです。プラットフォームでサポートされています。

Windowsを使用する子供用の靴には特別な注意を払う必要が
あります。Windowsに付属のメモ帳を使用してテキストファイルを編集しないでください。その理由は、メモ帳を開発したMicrosoftチームが、UTF-8でエンコードされたファイルを保存するために、非常に精神的に遅れた動作を使用したためです。各ファイルの先頭に0xefbbbf(16進数)文字を巧みに追加しました。驚くべきことがたくさんあります。たとえば、ウェブページの最初の行に「?」が表示されたり、プログラムが明確にコンパイルされるとすぐに文法エラーが報告されたりする場合があります。これらはすべて、メモ帳の精神的な遅延が原因です。強力であるだけでなく無料のメモ帳の代わりにメモ帳++をダウンロードすることをお勧めします。Notepad ++のデフォルトのエンコーディングをBOMなしでUTF-8に設定することを忘れないでください。
ここに写真の説明を挿入
ビジネスに戻り、次の内容でreadme.txtファイルを作成します。

Git is a version control system.
Git is free software.

これはGitリポジトリであり、他の場所でGitがどれほど強力であっても、このファイルが見つからないため、必ずlearngitディレクトリに配置してください(サブディレクトリも問題ありません)。
象を冷蔵庫に入れるのに必要な3つのステップと比較すると、Gitリポジトリにファイルを置くのに必要なステップは2つだけです。
最初のステップは、コマンドgit addを使用して、ファイルをウェアハウスに追加するようにGitに指示することです。
$ git add readme.txt
は上記のコマンドを実行し、表示はありません。そうです、Unixの哲学は「ニュースは良いニュースではありません」です。正常に追加されました。
2番目のステップでは、コマンドgit commitを使用して、ファイルをウェアハウスに送信するようにGitに指示します。

$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

git commitコマンドについて簡単に説明します。-mの後ろの入力は、この送信の説明です。任意のコンテンツを入力できます。もちろん、履歴から変更レコードを簡単に見つけることができるように、意味のあるものにすることをお勧めします。
困ったことに-m "xxx"を入力したくないですか?これを行う方法は確かにありますが、入力の説明は自分自身や他の人にとって重要であるため、これを行うことは強くお勧めしません。本当に説明を入力したくない場合は、自分でGoogleに連絡してください。このパラメータについては説明しません。
git commitコマンドが正常に実行されると、1つのファイルが変更され(追加したreadme.txtファイル)、2行のコンテンツが挿入された(readme.txtには2行あります)ことが通知されます。
Gitが追加とコミットの2つのステップでファイルを追加する必要があるのはなぜですか?commitは一度に多くのファイルを送信できるため、次のように異なるファイルを複数回追加できます。

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

2.2 gitサーバーを設定する

最初のステップは、gitサービスを実行するgitユーザーを作成することです。

$ sudo adduser git
$ passwd git
$ groupadd git
$ usermod -G git git

2番目のステップは、証明書ログインを作成することです。
最初にgitユーザーに切り替え、gitユーザーの公開キーと秘密キーを作成します。

$ su git
$ ssh-keygen -t rsa //以rsa的加密方式生成秘钥对
$ cd /home/git/.ssh
$ touch authorized_keys

ログインする必要のあるすべてのユーザーの公開鍵(自分のid_rsa.pubファイル)を収集し、すべての公開鍵を/home/git/.ssh/authorized_keysファイルに1行に1つずつインポートします。

3番目のステップは、Gitリポジトリを初期化することです。
最初にGitリポジトリとしてディレクトリを選択し、それが/srv/nginx-docs.gitであると想定して、/ srvディレクトリにコマンドを入力します。

$ sudo git init --bare nginx-docs.git

Gitはベアウェアハウスを作成します。ベアウェアハウスにはワークスペースがありません。サーバー上のGitウェアハウスは純粋に共有用であるため、ユーザーはサーバーに直接ログインしてワークスペースを変更することはできません。サーバー上のGitウェアハウスは通常.gitで終わります。 。次に、所有者をgitに変更します。
$ sudo chown -R git:git nginx-docs.git

4番目のステップは、シェルログインを無効にする
ことです。サーバー管理者として、SSHについて考慮すべきもう1つのポイントがあります。それは、SSHのセキュリティの問題です。上記のローカルプロトコルを導入したとき、この方法ではGitウェアハウスでのユーザーの操作を制御できず、ユーザーがGitウェアハウスを意図的または意図せずに損傷するのを防ぐことはできないと述べました。SSHプロトコルを使用する場合も同じ問題が発生します。ユーザーはSSHを介してコードをプルおよび送信できます。 、つまり、ユーザーはSSH経由でサーバーに接続し、Gitリポジトリで任意の操作を実行できます。これは非常に心配なことです。
したがって、gitアカウントにもいくつかの制限を設ける必要があります。デフォルトでは、新しいアカウントのログインシェルは/ bin / bashであり、この構成は/ etc / passwdファイルにあります。

git:x:1000:1000:git,,,:/home/git:/bin/bash

chshコマンドを使用して、ユーザーのログインシェルを変更し、SSH経由でサーバーにアクセスできないようにすることができます。変更するにはどうすればよいですか。使用できるすべてのログインシェルを定義する/ etc / shellsファイルを確認できます。/bin/bashを次のいずれかに変更できます。

root@myserver:~# cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

明らかに、これらのシェルは私たちが望んでいるものではありません。ユーザーがgit操作のみを実行でき、他の操作は実行できないシェルはありますか?幸い、Gitパッケージにはgit-shellというログインシェルが用意されており、通常は/ usr / bin / git-shellにあります。chshを使用してgitのログインシェルを変更します。

root@myserver:~# chsh git
Changing the login shell for git
Enter the new value, or press ENTER for the default
    Login Shell [/bin/bash]: /usr/bin/git-shell

このように、ユーザーgitがSSH経由でサーバーに接続すると、直接拒否されます。

5番目のステップ、リモートウェアハウスのクローンを作成する:
これで、他のユーザーはgit cloneコマンドを使用してリモートウェアハウスのクローンを作成し、それぞれのコンピューターで実行できます。
$ git clone git @ server:/srv/nginx-docs.git'nginx-docsへの
クローン作成'...
警告:空のリポジトリのクローンを作成したようです。
残りのプッシュは簡単です。

公開鍵の管理
チームが小さい場合は、全員の公開鍵を収集して、サーバーの/home/git/.ssh/authorized_keysファイルに配置することができます。チームの人数が数百人の場合、このようにプレイする方法はありません。現時点では、Gitosisを使用して公開キーを管理できます。
ここではGitosisのプレイ方法を紹介しません。基本的に数百人のチームがトップ500に入っています。Linuxの上級管理者を見つけることは大きな問題ではないと思います。


多くの管理権限があります。ソースコードを生命と見なすだけでなく、従業員を泥棒と見なす企業は、バージョン制御システムに権限制御の完全なセットを設定します。全員が読み取りおよび書き込み権限を持っているかどうかは、各ブランチまたは各ディレクトリに対しても正確です。下。GitはLinuxソースコードホスティング用に開発されているため、Gitはオープンソースコミュニティの精神も継承しており、権限制御をサポートしていません。ただし、Gitはフックをサポートしているため、サーバー側で一連のスクリプトを記述して、送信やその他の操作を制御し、権限制御の目的を達成できます。ジトライトはこのツールです。
ここではジトライトを紹介しません。権威のための闘いで限られた人生を無駄にしないでください。

まとめ
Gitサーバーのセットアップは非常に簡単で、通常は10分以内です。
公開キーを便利に管理するには、Gitosisを使用します。SVN
などの権限を制御するには、Gitoliteを使用します。
もちろん、より強力なツールであるgitlabがあります。正式な開発を行う場合は、この統合ツールを使用することをお勧めします。

つづく。後で共有し続けます。好きな友達が先に集まる〜

おすすめ

転載: blog.csdn.net/lingshengxueyuan/article/details/100543850