githubへ自作プログラムをgit pushする方法(httpsプロトコル編)

XserverやローカルPCで開発したpythonプログラムをgithubにpushする方法について記載します。ワタクシはPythonプログラムをXserverさんのサーバやローカルPC上で開発しているんですが、本日は自作プログラムをgithubにアップロードして管理する方法について備忘ログを残しておきます。

chatgptさんによるgithubへのgit pushのイメージ

枕詞(自作プログラムをgithubにアップしておくとITエンジニア感が高まる(幻想))

プログラマーが書いたプログラムを管理するソフトウェアはバージョン管理システムといいます。IT業界ではエンジニアの誰しもが使う基本ツールです。複数人のエンジニアがプログラムを書いて一つのプロダクトを作り上げるのですから、みんなのプログラムのソースコードは一つのところで適切に管理されなければならないのです。管理とは、誰がいつどのようなプログラムの追加や編集したかを記録して、把握できるようにする、ということです。

1人でプログラムを書くときも、ソースコードは適切に管理された方がいいのです。ワタクシもプログラムは自分のPCで開発したり、Xserverさんのサーバ上に置いたりします。ちゃんとプログラムの大本の場所を用意して、そこに置いて管理したいものです。さもなければパソコンとサーバー上のプログラムば微妙に違ってきちゃったりして、過去にどんな編集をしたのかわからなくなって、収拾がつかなくなってしまうのです。人間とは忘れる生き物なのです。

gitとgithubの関係

プログラムの管理には gitというバージョン管理ソフトを利用します。gitはソフトウェアのバージョン管理ソフトの事実上のデファクトスタンダードです。gitは(ざっくりと言うと)プログラムの編集履歴を管理します。いつ誰がどんなプログラム追加や修正を行なったのかの履歴をつけていきます。

そして、githubはgitプロジェクトのソースコードをインターネット上にホスティングするサイトです。Web上でgitによるプログラム管理を行うことができます。gitもgithubもITエンジニアならみんなつかてるよというものです。

gitの使い方(よく使うコマンド)

gitの使い方は、GUIツールで操作する方法、CUIでコマンドラインから利用する方法があります。本記事は「gitをちょい使い」するので気軽に始められるCUIでの操作を紹介いたします(gitを業務でガッツリ使うならGUIの方がいいかもです)。

個人開発だとgitのコマンドは以下の8つです(git branchとgit switch は使わなくていいかもしれないので6個でもいいかも)。

よく使うgitコマンドリスト解説
git clone #githubのリポジトリURL #保存ディレクトリgithubからリポジトリのコードをダウンロードする
git branch #ブランチ名ブランチを作成する。ブランチリストを表示する場合はgit branch -a
git switch #ブランチ名ブランチを切り替える
git add #追加したいファイルgit add * すると全部追加
git commit -m “#コミットメッセージ”gitに変更修正を確定させる。メッセージは備忘ログです。人は忘れる生き物。
git push #リモート名 #ブランチ名リモートのgithubに変更を反映させます。リモート名はoriginとすることが多い。
git pullリモートから最新コードをローカルに引っ張ってくる

今日はこれだけ覚えていってください(ワタクシはこれしか覚えてないです)。

gitの高度な使い方を含めたgitの使い方については、サル先生のgit入門(https://backlog.com/ja/git-tutorial/)をご参照ください。git入門の素晴らしいサイトでとてもおすすめです。

ではでは、本記事では上記のgitコマンドを駆使しつつ、自分のプログラムをgithubにアップして、世界のどこからでおアクセスできるようにするまでの手順をご紹介いたします。

準備: githubのアカウントを作る

gitで管理しているプログラムをgithubにアップロードするには、githubアカウントが必要です。メールアドレスがあれば作れると思います。github公式サイトのgithubアカウント作成のページをご参照ください。

https://docs.github.com/ja/get-started/start-your-journey/creating-an-account-on-github

githubにリポジトリを作る

ワタクシの流儀ですが、プログラム開発を始めるにあたり、githubにリポジトリを作成します。リポジトリとはgitでプロジェクトのプログラムをまとめる単位です。最初は空でいいのです。今回は m5pr-observer プロジェクトを作ってこちらにプログラムを格納していきます。ローカルPCでgit initで gitのリポジトリを作って、それをgithubにpushする、と言うような流儀も多分あると思いますが、ワタクシはgithub起点でリポジトリを作る流れで進めていきます。

(してない場合)gitのインストール

ローカルPCにはgitがインストールされている必要があります。Xserverのサーバーにはgitがインストール済みです。ローカルPCがmacならXcode Command Line Tools に付属しています。またbrewでgitがインストールできます。Windowsの場合はこちらの公式サイトのインストーラからインストールできます。https://gitforwindows.org/

Windows版は「Git bash」なるターミナルソフトも一緒にインストールすると、MacやLinuxと同様の操作感でターミナルからgitを操作できます。

リポジトリをlocalやXserver上にcloneする

自分のPCやXserverにリポジトリをcloneします。cloneとはリポジトリのプログラムや設定のダウンロードです。

ではでは、ワタクシ(meihuno)のgithubリポジトリ(m5pr-observer)のリポジトリをローカルやXserver上にclone(ダウンロード)します。

git clone https://github.com/meihuno/m5pr-observer.git  <リポジトリディレクトリ>

すると、「リポジトリディレクトリ」が作られます。githubのリポジトリは空なのに、ローカルやサーバ上には何がcloneされているのでしょうか? これは .git という隠しディレクトリが作成されます。.gitにはgitリポジトリの設定ファイルなどが含まれます。

後で重要になってくるのが上記のURLは「https」プロトコルだということです。httpsプロトコルでcloneをしているのです。

gitのブランチを作る(branchをきる)

git には開発の枝分かれをブランチ(branch)と言う概念で管理していきます。先程のcloneしたリポジトリで以下のコマンドを叩くと、

$ git branch -a

リポジトリのbranchが表示されます。github 経由のリポジトリですが mainブランチがあると思います。

個人開発ですとこのmainブランチをそのまま修正して、mainブランチをgithubにあげていく、というのでも良いのかもしれません。しかしワタクシは別のbranchを切ります。branchとはプログラムの変更修正の枝分かれを管理する概念で、branchを切っておくと、プログラム追加や修正を区切って管理できます。区切るとは、例えば、プログラムを描いた人、や、時期です。「今回の夏休みのプログラム回収はsummar_vacation ブランチにする」というふうに区切ります。プログラム開発時にブランチを切って、そのブランチ内で色々とプログラムを改変していきます。あるブランチ内で何かやらかしても、それはmainには影響しないというふうに、ブランチをきるとプログラムの変更修正の影響範囲をブランチ内にとどめておくことができます。

今回は developブランチを切っておきます。develpブランチにswitchします。

$ git branch develop
$ git switch develop

これでdevelopブランチに切り替わりました。mainブランチがプロダクト相当のブランチ(外に提供するverision)なのですが、developブランチは開発用のbranchです(最終的には、develop ブランチの内容をmainブランチへと統合していきますが、それはまたの機会に語ることにします)。

プログラムの追加(git add)

プログラムをレポジトリのディレクトリで作成したり、追加したりして、開発を行います。

$ git add *
$ git commit -m "任意のコメントを残しておきます。備忘ログ"

commitメッセージにはプログラムの修正などの内容をメモに残しておきます。複数人での開発時にはこのようなメッセージが「この修正何やったんだっけ?」とか「どのチケットに関連した修正なんだっけ?」みたいなことをトレースするための手がかりとなるのです。

commitしたことでプログラの修正がgitに加えることができるようになりました(咥えられたということは元に戻すこともできるのですが、そのようなgitの高度な使い方についてはサル先生のサイト(https://backlog.com/ja/git-tutorial/)をご参照ください)。

githubへ git push するための設定(本記事で大事なところ)

いよいよ プログラムを github へ push(アップロード)します。これにはgit push コマンドを実行します。このコマンドは originであるgithubのリポジトリのdevelopブランチに対して、ローカル環境のcommit済みプログラム修正をpushすると言う意味です。

$ git push origin develop
Username for 'https://github.com': #{任意のgithubユーザーネーム}
Password for 'https://{任意のgithubユーザーネーム}@github.com':

ですが、githubの認証情報を設定してしてなければ以下のようなエラーメッセージが出てくると思います。

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/#{githubユーザーネーム}/#{リポジトリの名前}/'

認証情報が足りないとエラーが出てきました。https://docs.github.com/ja/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls をみろ、とのことです。githubへhttpsプロトコルでアクセスするには追加の設定(tokenの取得)が必要なのです。

githubでアクセス用のトークンを取得する(本記事で最も大事なとこ)

githubで認証用のtokenを作っていきましょう。

トークン取得に関しては「【Github】Fine-grained personal access tokensで開発者がpushするときのtoken取得手順とそのスコープ」(https://qiita.com/ko-he-8/items/29d72226b93065c676ff)を参考にさせていただきました。ありがとうございます。

githubの認証用token生成のページは以下です。

https://github.com/settings/tokens?type=beta

Generate New token

Generate new tokenのボタンを押します

Expiration を設定します

Tokenの名前やExpiration(失効)の日付を設定します。Expirationを設定しないことは推奨されません。

パーミッションを設定します

パーミッション設定を行います。ContensにRead and Writeをセットすればよか。

Generate Tokeします。トークンの文字列が生成されますので、その文字列をコピーしてどこかへ大事に保存しておきます。認証情報が漏洩するとセキュリティ的によくなくgithubのリポジトリが不正アクセスされてしまいますので、取り扱いには注意です。

再度git pushします。パスワードの入力時には先ほどコピーしたトークンを用います。

hogehoge_machine:m5percentrule_repository meihuno$ git push origin develop
Username for 'https://github.com': #{任意のユーザーネーム}
Password for 'https://#{任意のユーザーネーム}@github.com': #{ここにトークンを入力/貼り付け}
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 303 bytes | 303.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/#{任意のユーザーネーム}/#{任意のリポジトリ名}.git
   7b9f21a..c6430c5  develop -> develop

すると、githubの方のdevelop branchも更新されています。

githubのdevelopブランチが更新されています。

やりました! これでローカルPCやXserverからgithubへプログラムの変更を反映させることができるようになります。以下のコマンドを設定するとpush時にアカウントを入力しなくてすむそうなので、お好みでどうぞです。

$ git config --global credential.helper store

今後、開発が進んだらどんどんdevelopブランチにpushしていきましょう。developブランチのの完成度が高まったらmainにpull requestを発行してプログラムのリリース版が完成です(pull リクエストについては別途記事にする予定です)。

(おまけ)git push と 対になる git pull

ちなみにpullするとgithubのリポジトリの内容がローカルやXserverに取り込まれます。自分のPCでの修正をgithubにあげて、Xserverの実行環境に取り込む、と言うような使い方をします。

(結語)よりよいプログラムを書くための果てしない道

他のつよつよエンジニアのsophisticated なコードとは違い、ワタクシのコードはあまりきれいではありません。かなりテキトーです。でも、徐々にでもよいコードにしていきたいです。「動きゃええねんの精神」と「誰だこんなクソコード書いたやつは!自分だ!」の間にある道(IT道)をワタクシは歩いていきます。明日もがんばろう。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です