Gitって何?
その中核は、Gitは単純な履歴追跡プログラムです。つまり、あるファイルの異なるバージョン間での変更を追跡します。その動作は、あなたがファイルを変更するたびに、Gitはその特定のファイルのバージョンのハッシュを作成します。
そこから、リポジトリの「Gitツリー」に対して、これらのハッシュを比較し、分析します。このようにすることで、Gitは複数のファイルのバージョン間の差分だけを保存することができるのです。 例えば、あなたがGitでスクリプトを書いていて、それにいくつか変更を加えたとします。Gitは、最初の2つの変更のハッシュだけを保存し、現在のファイルを最初の2つに対してハッシュします。そうすれば、Gitは同じファイルのコピーを複数保存することなく古いバージョンを再構築することができます。 このアプローチでは、ファイルやディレクトリをより大きなプロジェクトに簡単にスケールさせることもできます。Gitはすべての履歴データをハッシュとして保存するので、ローカルマシンの中だけで操作する必要があります。そのため、外部の管理ソフトウェアを使わなくても、自分の作業を他の人にエクスポートしたり、彼らの貢献をインポートしたりすることが簡単にできるのです。Gitのインストール
Gitは、Linuxベースのオペレーティングシステムでは非常に一般的なパッケージです。そのため、インストールは信じられないほど簡単です。ほとんどの場合、あなたのシステムにはすでにプリインストールされています。DebianやUbuntuを使っている場合は、aptを使ってGitをインストールすることができます。
sudo apt install git
FedoraやRHELの場合は、dnfを使用します。
sudo dnf install git-all
一方、Arch Linux を使っている場合は、pacman を使って Git をインストールすることもできます。
sudo pacman -S git
ローカルプロジェクトで Git を使う
ローカルマシンで Git を使うのはとても簡単です。まず最初に行うべきことは、新しい Git リポジトリを作ることです。このリポジトリの主な目的は、このプロジェクトで追加するすべての Git オブジェクトのコンテナとして機能することです。
追跡したいフォルダーで、次のコマンドを実行します。cd my-project
git init
これが完了すると、Git は “.git” フォルダーをプロジェクトディレクトリのルートに作成します。これは、Gitプログラムのマーカーであると同時に、そのプロジェクトのすべてのGitオブジェクトの格納フォルダとして機能します。
既存のファイルをリポジトリに追加する
Git リポジトリが動作するようになったら、次にすることは、既存のファイルを Git にインポートすることです。これは、新しいリポジトリを最初に作成したときに、Gitがファイルを追跡しないためです。
これを行うには、フォルダーのルートディレクトリで次のコマンドを実行します。git add .
このコマンドは、カレントディレクトリにあるすべてのファイルとフォルダーを含めるように Git に指示します。そして、次のコマンドを実行して確認します。
git diff --cached
最初のリポジトリのコミット
ファイルがリポジトリに登録されたら、次はその変更を Git ファイルシステムに書き込まなければなりません。これは、フォルダ内のすべての新しいファイルに適切なタグとハッシュを付けることを確認するためです。これを行うには、リポジトリの現在の状態を「コミット」する必要があります。
これを行うには、次のコマンドを実行します。git commit -a
これは、Git がキャッシュに保持しているすべてのものを仮想ファイルシステムに書き込むように指示します。
ここから、Git はこの特定のコミットについての説明を求めてきます。これによって、そのコミットの内容を簡単に説明することができ、またそのコミットを他のコミットと簡単に区別することができるようになります。私の場合は、これが最初のコミットなので “Initial Commit” とだけ書きます。 これで、Git があなたのディレクトリ内のすべてのファイルを認識しているかどうかを、次のコマンドで確認できるようになりました。git ls-files
上記のコマンドを実行中に、Git があなたを認識できないというエラーを出した場合は、あなたが誰であるかを教える必要があります。これを行うには、次のように入力するだけです。
git config --global user.name "Your_Username" と入力するだけです。
git config --global user.email "あなたのメール_address@mailserver.com"
Git における基本的なファイル操作
ほとんどの場合、UNIXコマンドはGitで動作します。つまり、Git リポジトリ内のすべてのファイルやフォルダーに対して ls
, cp
, mv
, rm
を使うことができます。しかし、Gitオブジェクトを簡単に操作するために使用できる、いくつかの特別なコマンドがあります。
例えば、サブコマンド ls-tree
を使うと、特定の Git ツリーの内容を表示したり、各ファイルの現在のハッシュ値を表示したりすることができます。
git ls-tree master
もうひとつ使えるコマンドは、Git 版の mv
です。このコマンドを使うと、リポジトリ内の任意の場所にファイルを移動しても、その履歴を保持したまま移動することができます。
git mv ./hello.file ./welcome.file
これは、バージョン管理でファイル名を変更したいけれども、その変更を Git で元に戻したいという場合に便利です。
これを知っていれば、次のコマンドを実行して履歴を失うことなくファイル名を変更することができます。
最後に、Git にはオブジェクトを削除するためのサブコマンドも用意されています。mvと同様に、Git 版の
rm` を使って現在のリポジトリからファイルを削除することができます。この方法で行うと、その特定のファイルに対する現在のオブジェクトをきれいに削除することができます。
git rm ./old.file
リモートリポジトリのクローン
リモートリポジトリをローカルマシンにインポートすることも可能です。これは、ネットワーク経由で別のプロジェクトをコピーする必要がある場合に便利です。Git には、すでに存在するリポジトリをクローンする機能があります。
クローンを作成する方法は、Gitがリモートプロジェクトのツリーを完全にコピーすることです。これにより、リポジトリの歴史全体を、その特定の瞬間に存在するものとして再作成することができます。git clone https://github.com/git/git.git
ローカルネットワーク上にのみ存在するリポジトリをクローンすることも可能です。これは、LAN上で他の人と共同作業をする場合に便利です。さらに、ローカルネットワーク上のプロジェクトのクローンを作成する手順は、まったく同じです。
git clone 192.168.1.100:/home/bob/awesome-project
オンラインプロジェクトでの Git の使用
他の人と共同作業をするもうひとつの方法として、サードパーティーのホスティングを使う方法があります。これは、Github のようなリモートサービスを使用してインターネット上でプロジェクトをホストするものです。これは、自分の作品を多くの人に配布するために迅速かつ簡単な方法が必要な場合に、非常に便利です。
それだけでなく、Githubのようなサービスは、リポジトリの作成と維持のプロセスを合理化します。そのため、リモートネットワークを介して他の人と共同プロジェクトを行うつもりなら、強力なサービスです。最初のオンラインリポジトリを作成する
Githubでリポジトリを作成するのはとても簡単です。一度アカウントにログインすると、サイトはあなたの個人的なランディングページにリダイレクトします。
このページには、あなたが現在フォローしているプロジェクトの最新の更新情報が表示されます。これには、あなたが他のプロジェクトに貢献したすべての簡単な履歴も含まれます。 ここから、あなたのプロフィール写真の横にある「+」記号をクリックする必要があります。すると、小さなドロップダウンメニューが表示され、あなたのアカウントに関するさまざまなアクションを選択することができます。そして、メニューから「新しいリポジトリ」をクリックします。 新規リポジトリ](/uploads/git-guide-18-github-new-repo.png) ここで、オンラインにするプロジェクトの詳細を指定します。ここから、プロジェクトを細かく調整するためのオプションをいくつか設定する必要があります。 まず、プロジェクトのリポジトリ名を指定する必要があります。これは、他の人があなたのリポジトリを探すときに検索できる名前として機能します。 次に、プロジェクトのプライバシーを設定する必要があります。公開と非公開のどちらかを選択できます。公開リポジトリは他の人があなたのプロジェクトをオンラインで検索できるようにし、プライベートリポジトリは一部の人にだけ共有できるようにします。 最後に、「Create Repository」ボタンをクリックして、新しいプロジェクトを完成させます。Githubとローカルマシンをリンクする
次に、ローカルマシンと Github アカウントをリンクさせる必要があります。このためには、2つのことを行う必要があります。
- まず、あなたのマシンの SSH キーを作成する必要があります。これは、あなたのコンピュータでローカルに生成できる短い暗号キーです。
- 最後に、現在のSSH鍵をGithubに伝える必要があります。これにより、あなたのマシンはGithubに対して固定されたIDを持つことができます。Github は、あなたがリポジトリを更新するたびに、この ID を使用してあなたを確認します。
SSH鍵の作成
Debian や Ubuntu を使用している場合、apt を使用して SSH をインストールすることができます。
sudo apt install ssh
そこから、ssh-keygen
プログラムを実行して、ssh の鍵を作成することができます。
ssh-keygen -t ed25519 -C "ramcesred@domain.email"
ssh-add /home/$USER/.ssh/id_ed25519
SSH鍵のリンク
Githubのダッシュボードに戻り、Profile Pictureをクリックし、Settingsをクリックします。
このようにすると、Github の一般的な設定が表示されます。 これで、Github アカウントの一般的な設定が表示されます。ここから、ページ左側のサイドバーにある「Access」セクションの「SSH and GPG Keys」リンクをクリックする必要があります。 SSH Keys" ヘッダーの横にある “New SSH Key” ボタンをクリックします。鍵の設定ページが表示されますので、新しいSSH鍵の内容をコピーしてください。 キーファイル(私の場合、From there, id_ed25519.pub keyfile in “~/.ssh” directory)をテキストエディタで開いてください。内容をコピーして、Githubに貼り付けます。ローカルコミットをオンラインにプッシュする
最後のステップは、ローカルプロジェクトの内容をオンラインにアップロードすることです。
ローカルマシンで Git フォルダに移動して、次のコマンドを実行します。git remote add origin git@github.com:ramcesred/my-project.git
を実行します。
ここで、あなたのローカルプロジェクトが現在 master ブランチであることを確認する必要があります。これは、Git があなたのプロジェクトの適切なバージョンをコピーするためです。次のコマンドを実行することで、それを確認することができます。
git branch -M main
最後に、現在のプロジェクトの状態をオンラインにプッシュします。
git push -u origin main
おめでとうございます。これで、Git プロジェクトを動かすための基本的な設定ができました。それだけでなく、Git がどのように動作し、どのようにすればあなたのために動作させることができるのかについての基本的な考えも得られたことでしょう。
よくある質問
他の人が私のオンラインGitプロジェクトに加えた変更を取得することは可能ですか?
はい!他の人があなたのオンライン・リポジトリに行った変更をコピーすることは可能です。これは、リモートオリジンからプルすることで可能です。
以下のコマンドを実行することで、簡単に更新をプルすることができます。git pull origin main` とします。Git を使うときに気をつけるべき問題は何ですか?
Gitを使う際の最大の問題の一つは、バイナリファイルを保存する際に多くの容量を消費することです。これには、画像やオフィス文書フォーマット、コンパイルされたプログラムなど、プレーンテキストでエンコードされていないあらゆるファイルが含まれます。
これは、Gitがオブジェクトを格納するために使用する圧縮とハッシュのアルゴリズムが、プレーンテキストファイルを強く支持するためです。バージョン管理下にバイナリをインクルードすることは可能ですが、Gitではバイナリの使用を避けるのがよい習慣です。Gitツリーにファイルを含めないことは可能ですか?
はい!コミットからファイルを除外することは簡単にできます。.gitignore “ファイルを使って、特定のファイルをインクルードしないことをGitに伝えることができます。
これは、リポジトリのルートフォルダ内に作成する隠しテキストファイルです。この中に、Git に無視させたいファイルやディレクトリの相対パスを記述します。 画像クレジット:Unsplash