Dive into Coding Life

Gitの基本的な使い方:GitHub連携その1

05/07/2021

GitHub連携

GitHubを使うには以下の二通りの方法があります。

  • GitHubでリポジトリを作成し、ローカルリポジトリにcloneして使う方法
  • ローカルリポジトリを作成し、GitHubにpushする方法

GitHubでリポジトリを作成し、ローカルリポジトリにcloneして使う方法

これは自然な流れですので特に難しくないでしょう。

ブラウザを使用し、GitHub上でリポジトリを新規作成します。
リポジトリ名を入力し、PublicかPrivateかを選択、その他はREADMEや.gitignoreを作成するか、どのライセンスを適用するかを選択するだけです。

リポジトリ作成後はcloneすればGitHubのリポジトリからローカルリポジトリへデータがコピーされます。

ローカルリポジトリを作成し、GitHubにpushする方法

ローカル環境でリポジトリを作成し、これをGitHub上にアップロードします。
GitHubでは他のリポジトリサービスからインポートはサポートしていますが、単純なアップロードはありません。
そこでGitHub上に空のリポジトリを作成し、ローカルリポジトリと紐づける作業が必要になります。

空のリポジトリを作成

手順としてはまずGitHub上でリポジトリを新規作成します。
その際にREADME.mdや.gitignore、ライセンス情報などを作成しないよう設定し、完全に空のリポジトリを作成します。

空のリポジトリを作成すると以降の手順が表示されますので、基本的にはこれを実行するだけです。

…or create a new repository on the command line
echo “# test1" >> README.md
git init
git add README.md
git commit -m “first commit"
git branch -M main
git remote add origin git@github.com:ユーザー名/リポジトリ名.git
git push -u origin main

…or push an existing repository from the command line
git remote add origin git@github.com:ユーザー名/リポジトリ名.git
git branch -M main
git push -u origin main

init、add、commitは以前説明しました。
参考:Gitの基本的な使い方: Gitコマンド
他のコマンドを見ていきましょう。

git branch -M main

古いバージョンのGitを使用している場合、初期化で作成されるデフォルトのブランチがmainではなくmasterになっています。
これは以前はGit、GitHub共にmasterというブランチがデフォルトでしたが、差別的なニュアンスを想起させるということで、GitHubを含め様々なソフトウェアでIT用語の置き換えが進んでいることの影響です。
GitHubのリモートリポジトリのブランチ名は既にmainに変更されているものの、Gitのバージョンが古い場合などローカルリポジトリのブランチ名はmasterのままになっている場合があります。

その場合は以下のコマンドを実行し、ローカルリポジトリのブランチ名をmasterからmainに変更します。

git branch -M main

git remote add

GitBashやコマンドプロンプトなどのターミナルコンソールで以下のコマンドを実行します。

git remote add origin git@github.com:ユーザー名/リポジトリ名.git

このコマンドはoriginという名前でgit@github.com:ユーザー名/リポジトリ名.gitを指すことを意味しています。
以降毎回長いリポジトリを指定する必要がなくなります。

git remote

コマンドで現在登録されているリポジトリ名を一覧することができます。

その他のコマンドを確認したい場合は以下のコマンドを実行し、ヘルプを参照してください。

git remote -h

GitHubへのpushとupstreamの指定

GitHubにpushしたいブランチで以下の操作を行います。

git push -u origin ブランチ名

このコマンドはoriginという名前のリモートリポジトリに、現在のブランチ情報をpushします。
originはgit@github.com:ユーザー名/リポジトリ名.gitのことでしたね。

このコマンドは単にpushを実行しているだけでなく、-uオプションを指定することにより更に、ローカルリポジトリの現在のブランチの上流(upstream)を指定したことになります。

ブランチの上流を登録することによりリモートリポジトリのブランチを上流とし、下流にローカルリポジトリのブランチがあるような関係を築きます。
この設定により、ブランチ上でデータを取得するコマンドを実行する際などに、リモートリポジトリを毎回明示する必要がなくなります。

各種確認メッセージとエラー

ブランチ名が見つからないエラー

git push -u origin ブランチ名

上記コマンド実行時に指定したブランチ名が見つからない場合、下記エラーが発生します。

error: src refspec ブランチ名 does not match any.

以下のコマンドで現在のブランチ名を確認してください。

git branch

パスフレーズの確認

GitHubへのアクセス時に以下の様なメッセージが出た場合はSSH Keyに設定したパスフレーズを入力しEnterを押下します。

Enter passphrase for key '~/.ssh/id_rsa’:

使用するツールによって事前にパスフレーズを登録しておくこともできます。
認証に成功すると本来行いたかった後続の処理が実行されます。

github.comとの信頼した接続の確立の確認

GitHubとの信頼した接続が確立されていない場合、下記のようなメッセージが表示されます。
yesと入力しenterキーを押下します。

The authenticity of host 'github.com (xxx.xxx.xxx.xxx)’ can’t be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

アクセス権限エラー

下記エラーが発生した場合はSSHで利用する公開鍵の登録が上手くできていません。
~/.ssh/に秘密鍵があるか、またそのペアである公開鍵がGitHub側に登録されているか、もう一度確認していてください。

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

403権限エラー

クライアントマシンで他のGitHubアカウントを使ったことがある場合、以下の403エラーが発生する場合があります。

remote: Permission to ユーザー名/リポジトリ名.git denied to 別のユーザー名.
fatal: unable to access 'https://github.com/ユーザー名/リポジトリ名.git/’: The requested URL returned error: 403

これはWindowsがログイン情報を保存し、自動保管していることが原因です。
コントロールパネル -> ユーザーアカウント -> 資格情報マネージャー
を開き、Windows資格情報タブの汎用資格情報から、git:https://github.comを選択し、編集するか削除するかします。

参考:
https://qiita.com/shuhey/items/42223d487565595570c8

Toolgit

Posted by codive