はじめに
Gitは、ソースコードのバージョン管理を行うためのツールです。本記事では、Gitの基本的な操作とGitHubを使ってリモートリポジトリにコードをアップロードする方法について記載します。実装方法がメインになります。詳細な理論やイメージを学びたい方は他の資料を参考にしてください。
※ディレクトリの構成やツリーなどについても説明していません。
手順一覧
- ローカルでの準備
1. Gitのインストールと基本設定
2. ローカルリポジトリの作成
3. ファイルの追加とコミット - リモートでの準備
4. GitHubアカウントの作成
5. SSH 公開鍵認証の作成
6. リモートリポジトリの作成
7. リモートリポジトリへの接続
1. ローカル環境でのGitのセットアップ
Gitのインストール
まず、Gitをインストール
- Git for Windows
-
Mac:
brew install git
-
Linux:
sudo apt install git
インストール後、以下のコマンドでバージョンを確認
git --version
ユーザー情報の設定
Gitを使用する前に、ターミナルかGit bashで基本設定を行う
git config --global user.name "名前"
git config --global user.email "メールアドレス"
外部エディタの設定(デフォルトはvimなことが多い)
git config --global core.editor vim
デフォルトブランチの名前をmasterからmainに変更
git config --global init.defaultBranch main
設定内容の確認
cat .gitconfig
設定したことが以下のように出力されればOK
[user]
name = 名前
email = メアド
[core]
editor = vim
[init]
defaultBranch = main
2. ローカルリポジトリの作成
フォルダの作成
まず、新しいプロジェクト用のフォルダを作成し移動
すでにフォルダを作成しているのであれば、cdで作成済みのフォルダへ移動
mkdir my-git-project
cd my-git-project
Gitリポジトリの初期化
Gitで管理したいフォルダの初期化を行う
$ git init
これにより、.git
フォルダが作成され、Gitの管理下に置かれます。
3. ファイルの追加とコミット
フォルダ内にあるファイル(orフォルダ)をGitにaddしてcommitする
$ git add ファイル名( or フォルダ名)
$ git commit -m "first commit"
"first commit" "updata_日付"などのcommit時のメッセージを記述する。-m
はcommitのオプションの1つ。
ここまでがローカル環境で実施する内容。
基本的には、フォルダを作成 ➡ 初期化 ➡ add ➡ commitの順番で操作する。ローカル環境でcommitしたものをリモートのGitHubにアップロードするという流れです。
次からはGitHubと連携した操作になります。
4. GitHubアカウントの作成
GitHubにアクセスし、自身のアカウントを作成する。
プロジェクトによって複数アカウントを使い分けることも想定されますが、そのような状況は、他のテキストや記事などを参考にしてくだい。
GitHub公式サイト
5. SSH 公開鍵認証の設定
GitHubへの接続にはHTTPSとSSHの2種類の方法があります。SSHを利用すると、毎回パスワードを入力せずに安全にGitHubへアクセスできます。
5-1. 秘密鍵と公開鍵のペアを作成する
5-2. ブラウザ経由でGitHubに公開鍵を登録する
5-3. ターミナルかGit bashからGitHubに秘密鍵を使って認証する
5-1. 秘密鍵と公開鍵のペアを作成する
SSH鍵の作成
$ ssh-keygen -t ed25519
出力例:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/yourname/.ssh/id_ed25519):
「Users/yourname/.sshにid_ed25519というファイル名で保存する」という意味。保存場所に特に問題が無ければそのままEnterを押す。
Enterを押すと以下のパスフレーズを聞かれる
Enter passphrase (empty for no passphrase):
自身のパスワード(なんでもいいが忘れないように)を入力する。なお、パスワードを入力しても、画面には表示されない。
Enter same passphrase again:
もう一度同じパスワードを入力するよう指示があるので、同じパスワードを入力する。パスワードが一致すると以下のような表示が出力される。
Your identification has been saved in /Users/yourname/.ssh/id_ed25519
Your public key has been saved in /Users/yourname/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:hogehoge yourname@デバイス名
The key's randomart image is:
+--[ED25519 256]--+
| .o+.==+ +. |
| . ==+ E o.|
| +=++O + +|
| ..+=o. O*|
| S .. =+O|
| . O |
| *|
| ..|
| |
+----[SHA256]-----+
5-2. ブラウザ経由でGitHubに公開鍵を登録する
次は作成した公開鍵をGitHubに登録したい。
$ cat ~/.ssh/id_ed25519.pub
上記のコマンドの出力をコピーする(これが登録したい鍵)。直接Users/yourname/.sshに保存されているid_ed25519.pubファイルを開いてコピーしても構わない。
5-2-1. ブラウザからGitHubにログインする
5-2-2. 「Settings」→「SSH and GPG keys」→「New SSH key」をクリック
5-2-3. 「Title」に適当な名前を入力し、「Key」にid_ed25519.pubからコピーした公開鍵を貼り付ける
5-2-4. 「Add SSH key」をクリック
これでGitHubにSSH公開鍵の登録が完了。
5-3. ターミナルかGit bashからGitHubに秘密鍵を使って認証する
最後に登録が完了したら認証できているかを確認する。
$ ssh -T git@github.com
初回接続時には以下のメッセージが出る。yesと入力する。
Are you sure you want to continue connecting (yes/no/[fingerprint])?
2回目以降の接続では出力されず、以下のメッセージが出る。
Enter passphrase for key '/Users/yourname/.ssh/id_ed25519':
パスワード入力する。その結果、
Hi (GitHubの)username! You've successfully authenticated, but GitHub does not provide shell access.
と表示されれば、鍵の登録に成功した。
6. GitHubにリモートリポジトリを作成
6-1. GitHubにログインし、「New Repository」をクリック
6-2. リポジトリ名を入力し、「Create repository」をクリック
6-3. リポジトリが作成できたらcode(SSH: git@github.com:your-username/your-repository.git
)をコピー。
7. リモートリポジトリにコードをアップロード
リモートリポジトリを追加
ローカルリポジトリにリモートリポジトリを登録します。
git remote set-url origin git@github.com:your-username/your-repository.git
GitHubへpush
リモートリポジトリにローカルの変更をアップロードします。
git branch -m main
git push -u origin main
これで、GitHubへのアップロードは完了です。
最後にGitHubのリポジトリページを開き、ファイル( or フォルダ)
がアップロードされていることを確認しましょ!
以下、エラーの思い出を書いておきます。
エラー
以前、push後に以下のようなエラーが表示されました。
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/your-username/your-repository.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
このエラーは、リモートリポジトリにローカルリポジトリにはない変更があるとき発生します(つまり、リモートとローカルで不一致ですよってこと)。
例えば、リモートリポジトリ作成時に.gitignoreやREADMEの作成にチェックを入れるとローカルとリモートで異なる状態のリポジトリが作成されます。
エラー解消方法として、まずリモートの変更を取り込んでから、再度pushする必要があります。
git pull origin main --rebase
--rebase
オプションを使うことで、リモートの変更をローカルに取り込みます。
その後、再度push
を実行する
git push origin main
強制的にpushする方法(非推奨)
「ローカルの変更を優先してリモートの変更を上書きしたい」場合は、強制 push も可能です。
git push -f origin main
注意
- リモートリポジトリの履歴が上書きされるため、他の人がpushした変更を失う可能性がある
- チーム開発では 基本的に使わない
まとめ
この記事では、
- Gitの基本的な操作(
init
、add
、commit
) - GitHubアカウントの作成
- ローカルリポジトリをGitHubにpushする方法
を説明しました。add、commitのオプションの使い方やlog、差分の確認方法など他の機能についても整理したいと思います。