LinuxでGitバージョン管理システムを使う方法[総合ガイド]


バージョン管理(リビジョン管理またはソース管理)は、ファイルまたはファイルのコレクションに対する変更を時間の経過とともに記録して、後で特定のバージョンを呼び出せるようにする方法です。バージョン管理システム(または VCS )は、ファイルシステム上のファイルへの変更を記録するツールです。

多くのバージョン管理システムがありますが、特に Git は現在最も人気があり、特にソースコード管理のために頻繁に使用されています。バージョン管理は、実際にはソースコードだけでなく、コンピュータ上のほぼあらゆる種類のファイルに使用できます。

バージョン管理システム/ツールは、個人または人々のグループが以下を可能にするいくつかの機能を提供します。

  • create versions of a project.
  • track changes accurately and resolve conflicts.
  • merge changes into a common version.
  • rollback and undo changes to selected files or an entire project.
  • access historical versions of a project to compare changes over time.
  • see who last modified something that might be causing a problem.
  • create a secure offsite backup of a project.
  • use multiple machines to work on a single project and so much more.

Git などのバージョン管理システム下のプロジェクトには、主に3つのセクションがあります。

  • a repository: a database for recording the state of or changes to your project files. It contains all of the necessary Git metadata and objects for the new project. Note that this is normally what is copied when you clone a repository from another computer on a network or remote server.
  • a working directory or area: stores a copy of the project files which you can work on (make additions, deletions and other modification actions).
  • a staging area: a file (known as index under Git) within the Git directory, that stores information about changes, that you are ready to commit (save the state of a file or set of files) to the repository.

VCSには主に2つのタイプがありますが、主な違いはリポジトリの数です。

  • Centralized Version Control Systems (CVCSs): here each project team member gets their own local working directory, however, they commit changes to just a single central repository.
  • Distributed Version Control Systems (DVCSs): under this, each project team member gets their own local working directory and Git directory where they can make commits. After an individual makes a commit locally, other team members can’t access the changes until he/she pushes them to the central repository. Git is an example of a DVCS.

また、 Git リポジトリにはベア(作業ディレクトリがないリポジトリ)またはベア以外(正常に機能しているもの)を指定できます。ディレクトリ)。 共有(またはパブリックまたはセントラル)リポジトリは常に裸であるべきです - すべてのGithubリポジトリは裸です。

Gitでバージョン管理を学ぶ

Git は、大規模プロジェクトで非常に効率的で、注目に値する分岐およびマージシステムを備えた、無料でオープンソースの、高速で強力な、分散された、使いやすい、人気のあるバージョン管理システムです。 Gitディレクトリに格納されているミニファイルシステムの一連のスナップショットのようなデータを処理するように設計されています。

Git の下のワークフローは非常に簡単です。作業ディレクトリ内のファイルを変更してから、変更されたファイルのみを選択的にステージング領域に追加して、次のコミットの一部にします。

準備ができたら、コミットを実行します。これにより、ステージング領域からファイルが取得され、そのスナップショットが永久にGitディレクトリに保存されます。

Linuxに Git をインストールするには、選択したディストリビューションに適したコマンドを使用します。

$ sudo apt install git   [On Debian/Ubuntu]
$ sudo yum install git   [On CentOS/RHEL]

Gitをインストールしたら、次のように氏名とメールアドレスを入力して、 Git に自分の身元を知らせることをお勧めします。

$ git config --global user.name “Aaron Kili”
$ git config --global user.email “[email protected]

Gitの設定を確認するには、次のコマンドを使います。

$ git config --list 

新しいGitリポジトリを作成します

ある[共有のリポジトリや一元管理されたワークフローは非常に一般的であり、それは私たちがここで実証するものです。たとえば、 bashscripts というプロジェクトに取り組むために、組織のさまざまな部署のシステム管理者/プログラマーのためのリモート中央リポジトリを設定する必要があるとします。サーバー上の>/projects/scritpts/

リモートサーバーに SSH して必要なディレクトリを作成し、 sysadmins という名前のグループを作成し(このグループにすべてのプロジェクトチームメンバーを追加します(例:ユーザーadmin))、このディレクトリ

# mkdir-p /projects/scripts/
# groupadd sysadmins
# usermod -aG sysadmins admin
# chown :sysadmins -R /projects/scripts/
# chmod 770 -R /projects/scripts/

それから、ベアプロジェクトリポジトリを初期化します。

# git init --bare /projects/scripts/bashscripts

これで、プロジェクトの中央ストレージ機能である裸の Git ディレクトリを正常に初期化できました。そこにあるすべてのファイルとディレクトリを見るためにディレクトリのリストを作成してみてください。

# ls -la /projects/scripts/bashscripts/

Gitリポジトリを複製する

リモート共有Gitリポジトリを SSH でローカルコンピュータにクローンします(Webサーバーがインストールされ適切に設定されている場合は HTTP/HTTPS でもクローンできます)例えば、Githubのほとんどの公開リポジトリの場合)、

$ git clone ssh://[email protected]_server_ip:/projects/scripts/bashscripts 

特定のディレクトリ(〜/ bin/bashscripts )に複製するには、下記のコマンドを使用してください。

$ git clone ssh://[email protected]_server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

これで、プロジェクトのローカルインスタンスが非ベアリポジトリ(作業ディレクトリ付き)に作成されたので、プロジェクトの初期構造を作成できます(つまり、 README.md file、さまざまなカテゴリのスクリプト用のサブディレクトリ(例:店舗偵察スクリプトの保存、sysadmin roストア、sysadminスクリプトの保存など):

$ cd ~/bin/bashscripts/
$ ls -la

Gitステータスの概要を確認する

作業ディレクトリのステータスを表示するには、 statusコマンドを使用して、行った変更をすべて表示します。どのファイルがGitによって追跡されていないか段階的な変更など。

$ git status 

Gitステージの変更とコミット

次に、 addコマンド -A スイッチを使用してすべての変更をステージングし、最初のコミットを行います。 -a フラグは、変更されたファイルを自動的にステージングするようにコマンドに指示し、 -m はコミットメッセージを指定するために使用されます。

$ git add -A
$ git commit -a -m "Initial Commit"

リモートGitリポジトリへのローカルコミットの発行

プロジェクトチームのリーダーとして、プロジェクト構造を作成したので、次に示すようにプッシュコマンドを使用して中央リポジトリに変更を公開できます。

$ git push origin master

現時点では、ローカルのgitリポジトリはプロジェクトの中央リポジトリ(起源)に合わせて更新されているはずです。これを確認するには、もう一度 statusコマンドを実行します。

$ git status

また、リポジトリをローカルコンピュータに複製して、同僚にプロジェクトの作業を開始するよう通知することもできます。

新しいGitブランチを作成する

ブランチを使用すると、コードベースに触れることなく、プロジェクトの機能に取り組むことや問題を迅速に修正することができます(マスターブランチ)。新しいブランチを作成してそれに切り替えるには、それぞれブランチおよびチェックアウトコマンドを使用します。

$ git branch latest
$ git checkout latest

別の方法として、新しいブランチを作成し、 checkoutコマンド -b フラグを使ってワンステップで切り替えることもできます。

$ git checkout -b latest

たとえば、他のブランチに基づいて新しいブランチを作成することもできます。

$ git checkout -b latest master

どのブランチにいるのかを確認するには、 branchコマンドを使用します(アスタリスク文字はアクティブなブランチを示します)。

$ git branch

新しいブランチを作成してそれに切り替えた後、その下にいくつかの変更を加え、いくつかのコミットを行います。

$ vim sysadmin/topprocs.sh
$ git status
$ git commit add  sysadmin/topprocs.sh
$ git commit -a -m 'modified topprocs.sh'

あるブランチから別のブランチへの変更のマージ

ブランチテストでの変更をマスターブランチにマージするには、マスターブランチに切り替えてマージを実行します。

$ git checkout master 
$ git merge test 

特定のブランチが不要になった場合は、 -d スイッチを使って削除できます。

$ git branch -d test

リモートセントラルリポジトリからの変更のダウンロード

チームメンバーが中央のプロジェクトリポジトリに変更をプッシュしたと仮定すると、 pullコマンドを使用してプロジェクトのローカルインスタンスに変更をダウンロードできます。

$ git pull origin
OR
$ git pull origin master	#if you have switched to another branch

Gitリポジトリの調査と比較の実行

この最後のセクションでは、リポジトリ内で発生したすべてのアクティビティを追跡し、プロジェクトの履歴を表示できるようにする便利なGit機能について説明します。

最初の機能はGitログです。これはコミットログを表示します。

$ git log

もう1つの重要な機能は、さまざまな種類のオブジェクト(コミット、タグ、ツリーなど)を表示する showコマンドです。

$ git show

あなたが知る必要がある3番目の重要な機能はdiffコマンドです。これはブランチ間の違いの比較や表示、作業ディレクトリとインデックスの間の変化の表示、ディスク上の2つのファイル間の変化などです。

たとえば、マスターブランチと最新のブランチの違いを表示するには、次のコマンドを実行します。

$ git diff master latest

Git を使用すると、特定のバージョンを後で呼び出せるように、時間の経過とともにファイルへの変更を記録しながら、同じファイルを使用して共同作業を行うことができます。

このように、Gitを使ってソースコード、設定ファイル、あるいはコンピュータに保存されているファイルを管理することができます。さらなる文書についてはGit Online Documentationを参照してください。