趣味でプログラミングやってる者だけどGitの便利さを知ってしまった
今まで食わず嫌いのようにGitを遠ざけていました。
と言うのも、使わなくても完結していたからです。
IT系の企業であればGitは必ず使用していますし、求人にも経験の欄にGitが記載されるくらい必須な技術と言えます。
なので僕も今更ですがGitを勉強してみました。
Gitとは
Gitとはプログラムのコードを記録する管理システムです。
僕の解釈で言いなおします。
自分のパソコンで書いたコードをGItと言うシステムを使用してGithubと言うオンライン上に保存することができます。
コードの書き直しをしたときはGithub上のデータを更新することもできますし、コピーを作ることもできます。
万が一、コードを消してしまった場合でもGithubから元のデータをダウンロードすることもできるんです。
しかも複数人で編集することも可能ですし、世界中の人に作ったプログラムを配布することもできるんです。
Gitがなんなのかがわかれば使うメリットに気付きますよね。
Gitの使い方
Gitを使うにはまずGithubのアカウントを作る必要があります。
アカウントの作り方やGitの使い方はprogateが一番わかりやすいです。
下記のリンクはMacでの設定方法かもしれませんが、アカウントの作り方やGitの使い方は一緒なので参考にどうぞ。
Gitの用語がわからない
Gitにはたくさんの専門用語が出てきます。
コミットするとかブランチしてプッシュするとか。
もう何がなんやら。
ですが、Gitの手順を踏んで行けば大体わかるはずです。
と言うわけで全体の流れを記載しておきます。
Gitの流れ
- Github上でコードを保管するフォルダを作成
- ローカルで作業するフォルダを作成
- ターミナルを開き2の場所へ移動する
- Gitの初期設定(name, email, リモートリポジトリの登録など)をする。
- Gitの初期化をする。(この時、Gitの隠しファイルが作成される)
- アップロードしたいファイルをGitの隠しファイルに追加する。
- 何を記載したコードなのかあとでわかるようにコメントをつける。
- 1で作成したGithubのフォルダにアップロードする。
こんな感じが大まかな流れです。
次に詳細を追っていきます。
1. Github上でコードを保管するフォルダを作成
Github上のコードを保管するフォルダのことをリモートリポジトリと呼びます。
リポジトリはGithubページ右上にある+マークを押すしてNew repositoryするか、トップページの左側にあるショッピングモールでよく見かけるトイレットペーパーを2段で設置できるやつのマークを押すと作成できます。
repository nameは好きなもので結構です。
リモートリポジトリにはpublicとprivateの2種類があり、パブリックはアップロードしたコードの内容がGithub上で公開され、プライベートは非公開になります。
好きなものを選択してcreateボタンを押しましょう。
何やらコードが書かれた画面が表示されると思いますが、この画面はあとで使うので閉じないでください。
2. ローカルで作業するフォルダを作成
例えばUsers/owner/Documents/workspace/js など好きな場所に作業フォルダを作成します。
書いたコードはここに保存していきます。
CUIで作成してもいいですし、GUIで作成してもいいです。
% mkdir workspace >> フォルダの作成 % touch sample.js >> 空のファイルを作成
3. ターミナルを開き2の場所へ移動する
Gitはターミナルからいじるので、ターミナルで2で作ったフォルダに移動してください。
移動の時はcd
コマンドを使います。
change directory
の略です。
% cd workspace
4. Gitの初期設定(name, email, リモートリポジトリの登録など)をする。
ターミナルでGitを使う人の名前とメールアドレス を入力します。
% git config --global user.name eco % git config --global user.email testmailaccount@example.com
誰がコメントしたのかわかるように名前を付けます。
5. Gitの初期化をする。(この時、Gitの隠しファイルが作成される)
さて、現在ターミナル上では作業フォルダ(2で作成したフォルダ)にいると思います。
そこで下記のコマンドを実行します。
% git init
init
はinitialize
の略で初期化すると言う意味です。
git init
を行うと.git
と言う隠しフォルダが作成されます。
これをローカルリポジトリと呼びます。
初期化したあとはリモートリポジトリの登録を行います。
1で作成したGithubの画面を再度開きます。
以下のような画面が表示されていると思うので赤枠のところのurlをコピーし、下のコマンドのURLと置き換えてください。
% git remote add origin https://github.com/***/***.git
6. アップロードしたいファイルをGitの隠しファイルに追加する。
例えば、get_asin.jsと言うJavaScriptファイルを作成しこれをGithubにアップロードしたいとします。
その時は
% git add get_asin.js
のように記述します。
この時点ではまだアップロードはされていません。
7. 何を記載したコードなのかあとでわかるようにコメントをつける。
次はコメントを付けます。
% git commit -m "初めてのGit"
こうすることで変更した内容が後々でわかるようにしておきます。
8. 1で作成したGithubのフォルダにアップロードする。
最後にアップロードです。
% git push origin master
push
でアップロードします。
origin
はリモートリポジトリの場所を表しています。
master
はデフォルトのブランチ
を表しています。
ブランチ
とは、枝です。
Githubにはブランチと呼ばれる分岐を作ることができます。
masterと言うメインのコードがあり、例えば試しに追加したいコードがあったとします。
これをメインのコードに書いて上書きするよりも、コピーを作ってそちらにコードを追加した方がもしうまいこといかなかったときのことを考えると良さそうです。
このコピーをブランチと呼びます。
あのときああしていれば、と言うパラレルワールドのようなものですね。
初回はpush
時にIDとパスワードの入力を求められます。
Githubを作成したときの物を入力すれば大丈夫です。
何はともあれこれでGitの大まかな流れは終了です。
9. Github上のデータをダウンロードする
Githubは複数人でのコード管理を行うことができます。
例えば、他の人がリモートリポジトリにpush
したとします。
自分のローカルリポジトリは更新されていないのでpull
を使ってリモートリポジトリと同じ状態にしてあげる必要があります。
そこで使うコマンドが
% git pull origin master
これで差分をダウンロードし自分のリポジトリを更新することができます。
clone と pull の違い
Gitには有名なclone
コマンドがあります。
よく公開されたライブラリを自分のPCにインストールするときに使うコマンドです。
% git clone https://github.com/***/***.git
ココの*はライブラリを公開している人のリモートリポジトリのURLです。
clone
の場合は差分の更新ではなく、リモートリポジトリを自分のPC内に丸ごと複製するコマンドです。
僕もGit初心者なので、複数人で管理することもないですし、まだブランチを作ったこともないので最初はclone
を使っていればいいと思います。
Gitの困った
remote: Invalid username or password
push
の時にusernameかpasswordが間違っていると警告が出ました。
最悪わからなかったらパスワードの変更です。
https://github.com/settings/security
ココからパスワードの変更が可能です。
I forgot my password から変更をしましょう。
あるいはリモートリポジトリの再登録を行います。
% git remote -v
このコマンドで現在登録されているリモートリポジトリの確認が取れます。
間違えていなくても再設定することでpush
できたりします。
再設定は下記のコマンドで可能です。
% git remote set-url origin https://github.com/***/***.git
また、git remote -v
を実行したときに何も表示されなければremote
の設定ができていないということです。
% git remote add origin https://github.com/***.git
を実行しリモートの設定をします。
これを行っていないとfatal: No such remote 'origin'
というエラーが発生します。
まとめ
gitを少しだけ体験して、とても便利な機能だなと感じました。
まだまだ使っていないコマンドもありますが徐々に勉強していこうと思います。
やる気はあるんだけど、体力が追いつかない。
運動でも始めようかなー