概要
UbuntuにGitを導入して、リポジトリをクローン~コミットプッシュまで行ったのでその方法についてまとめた。
前提
GitHubアカウントを作成していること。
UbuntuにGitをインストール
以下のコマンドを実行し、UbuntuにGitをインストールする。
※管理人は既にインストール済みなので、インストール済みのメッセージが表示される
ターミナル
sudo apt install -y git
以下のコマンドでダウンロード確認ができる。
ターミナル
git --version
Gitの設定
以下のコマンドを実行し、ユーザー名とメールアドレスを設定する。
ターミナル
git config --global user.name "あなたの名前"
git config --global user.email あなたのメールアドレス
設定できたら、以下のコマンドを実行して設定結果を確認する。
ターミナル
git config --list
GitHubの認証情報等を設定
GitHubの認証情報をUbuntuで設定するには、一般的にはHTTPSとSSHの2つの方法がある。
今回はSSH接続の方法について実施した。
Ubuntu側の設定
以下のコマンドを実行して、パスフレーズなどを設定する。
ターミナル
ssh-keygen -t ed25519 -C "あなたのメールアドレス"
以下のコマンドを実行して、表示される公開キーをコピーする。
ターミナル
cat ~/.ssh/id_ed25519.pub
GitHubに公開キーを登録
GitHubの自身のアカウントを開き、以下を設定する。
GitHubアカウントの「Settings」→「SSH and GPG keys」→「New SSH key」へ移動し、公開キーを「Key」フィールドに貼り付けて「Add SSH key」を押下する。
SSHでの接続テスト
以下のコマンドを実行して、SSH接続のテストを行う。
ターミナル
ssh -T git@github.com
初回接続の場合、多少メッセージは異なるが以下のようにsuccessfully云々という文言が表示されていればOK。
改行コードの設定
WindowsとLinuxでは改行コードが異なる。
これを解決するためにGitでは改行コードを自動変換する仕組みがあり、デフォルトではこの自動変換が有効になっている。
この設定が有効になっているとトラブルのもとになる可能性があるとのことなので、以下のコマンドで無効にする。
ターミナル
git config --global core.autocrlf false
リポジトリ作成
クローン対象のリポジトリをGitHubにて作成する。
※具体的な作成方法等は割愛
Ubuntu内のクローン先フォルダを作成しておく。
Ubuntu内でGitクローン
前提
VSCodeのリモート接続でUbuntuに接続できること。
概要 これからPythonのDjangoフレームワークを学ぶにあたり、開発環境を構築する。 今回はWindowsに仮想のLinuxOS環境を用意し、その中でPythonの仮想環境を作成するところまで行う。 LinuxOSを導入する[…]
Visual Studio Codeからクローン
以下の流れでリポジトリをクローンする。
※「リポジトリのクローン」ボタンが表示されない場合、リモート接続を解除して再接続すると表示される
コミットプッシュ
クローンしたフォルダ内でファイル等を作成すると、以下のようにコミット対象が表示される。
以下のように任意のコメントを入力して「コミット」ボタンを押下する。
確認ダイアログが表示されるので「はい」を選択。
以下の「変更の同期」を押下することでプッシュできる。
確認ダイアログが表示されるので「OK」を選択。
これによりプッシュまで完了する。
作成したリポジトリを確認すると、コミットプッシュに成功していることがわかる。
その他
コミットとプッシュを上記の手順で問題なくできていたが、何回かプッシュエラーが起こるケースがあった。
時間を空けると解決したというケースがあったが、対応できたのでその方法についても紹介する。
エラー内容
上記のようなエラーが起きた。
対応
DNSの設定(Googleのネームサーバーの利用)
ターミナル
sudo vi /etc/resolv.conf
vim
nameserver 8.8.8.8
管理者権限でresolv.confを開き、namesesrverを「8.8.8.8」(Googleネームサーバー)に修正した。
いろいろ調査した結果、どうやらUbuntuは名前解決できないケースがあるらしい。
DNSの設定でGoogleネームサーバーに変更してなぜ解決するのかまでに至っていないが、ひとまず上記を設定することでGitへのプッシュは成功した。