- 投稿日:2020-08-18T23:20:14+09:00
gitコマンド[メモ]
内容
- gitコマンドのメモ
チート表とかもあるけど、とりあえず自分で使ってみたものをメモ前提知識
よく出てくる「origin master」と「origin/master」何が違うのかよく分からないので調べてみた。
まずこの2つをわかりやすくするには、「origin」、「master」、「origin/master」の3つに分ける。
- origin
これは要するにリモートブランチそのもののこと。
当然その中にはブランチがあるはずである。
- master
という事でこれがブランチを表している。
であるので、「origin master」とは、リモートブランチの(origin)masterブランチを指しているわけである。
- origin/master
上記2つはリモートブランチだったが、こちらはローカルブランチ。
リモートのmasterブランチを追跡する追跡ブランチである。
これらそれぞれが何してるか分かっとくとコマンド打つときある程度迷わなくなる?(逆に曖昧で現場で迷った経験あり笑)
リモートの変更を持ってくる
- git pull < origin [ブランチ名] >
<>に記載しているブランチの変更をひっぱってくる。
実際は引数なしでチェックアウトしているブランチの変更を引っ張ってくることが多い?git pull # あえて引数を指定するなら git pull origin mastergit pullは実際は、「git fetch」と「git merge」のコマンドをまとめて行っているコマンドである。
- git fetch < origin [ブランチ名]>
リモートブランチ内の引数に設定したブランチ(引数がなければ現在チェックアウトしているブランチ)を
ローカルブランチの追跡ブランチに落とす。この時の追跡ブランチが「origin/[ブランチ名]」。
- git merge < origin [ブランチ名] > fetchで落とした「origin/[ブランチ名]」をローカルに落とす。
# masterブランチの変更を落としたい場合 git pull # もしくは丁寧に git fetch git merge origin master初心者のうちは、fetchしてからmergeした方が何しているか理解する上でもいいのかなぁ。
ブランチ作成
基本的にmasterを変更してpushってことはないかと思われる。。。
という事でその変更ごとにブランチを切って、レビューしてからマージするはず。
となのでまずはブランチの切り方。
- git branch < ブランチ名 >
引数で与えたブランチ名でブランチを新しく作成。# testというブランチを新しく作成 git branch test
- git checkout < ブランチ名 > 上で作成したブランチ名を入れればそのブランチに移動できる。 元々ブランチが作成されているのであればこれでブランチの変更が可能。 git pull後にチェックアウトした場合もう一度git pullする。(チェックアウトしたブランチが変更されている可能性があるため)
#上で作成したtestブランチに移動 git branch test
- git checkout -b < ブランチ名 >
めんどくさいから新しいブランチ作ってそのままチェックアウトしちゃう便利なやつ#testtestブランチを作成 git checkout -b testtestリモートに変更をあげる
無事にブランチも切れた事でファイルを編集後リモートに反映する。
今回は、testブランチで新しくtest.txtとindex.txtというファイルを作成する。touch test.txt touch index.txt
この作ったファイルをリモートに反映していく。
以前書いているので詳しいことは省略。
(今回はstatusなどの状態の確認は省略している)
ただし、pushの仕方のみ注意!# リモートに反映したいファイルの登録 git add test.txt index.txt # 変更記録を保存 git commit -m "create newfile" # リモートに送る git push -u origin test初回pushのみオプションとして「-u」をつけること。
これをすることでpushしたローカルのブランチが上流ブランチとして登録される。(2回目以降はオプションなしで問題ない)
※上流ブランチと追跡ブランチの違いがよく分からん-------- ローカル -------- ---- リモート ---- < master > -> < origin/master > | < master > == 上流ブランチ => == 上流ブランチ =>ローカルのの上流ブランチは、< origin/master >である。このブランチはローカルのを上流ブランチとした追跡ブランチである。
って認識?
新しくブランチ切った場合は、fetchするまで追跡ブランチはない?
これは時間あるときに調べましょう。その他コマンド
- git status
現在の変更状況が確認できる。
- git diff
変更したファイルの変更点の確認ができる- git stash
- git stash save "massage"
修正途中で他の作業がしたい!でもコミットはしたくない!ってときに一時退避できる。
save "message"でメッセージを残せる。- git stash list
stashで退避した作業の一覧が見れる。git stash list # こんな感じで表示される stash@{0}: WIP on test: xxxx stash@{1}: WIP on sample: xxxx
- git stash apply
- git stash pop
退避した作業を戻す。
stashは戻したリストを残す。# listで表示したもののどれに戻したいかを最後の引数で指定 git stash apply stash@{0} # 最新なら引数なしでOK git stash apply # listを表示しても削除はされていない git stash list stash@{0}: WIP on test: xxxx stash@{1}: WIP on sample: xxxxpopは削除。
# listで表示したもののどれに戻したいかを最後の引数で指定 git stash pop stash@{0} # 最新なら引数なしでOK git stash pop # listを表示すると適用したものが削除されている git stash list stash@{0}: WIP on sample: xxxxgit stash >> stash.txtでテキストに出してapplyできた気がするけどちょっと調べよう。
- 投稿日:2020-08-18T21:58:53+09:00
初めてのpush時に出たエラーの対処法まとめ
今回出たエラー
- ローカルリポジトリとリモートリポジトリとの紐づけ忘れエラー
- rejectedエラー
- mergeエラー
やったこと
(★だけ追っていけばエラーを出さずにpushできるはず!)
1.ローカルリポジトリ作成★
$ git init2.適当なファイルを作成★
最初にコミット&プッシュする為の適当なファイル(RubyTraining.md)を作成。
3.ステージングエリアにmdファイルを登録★
$ git add RubyTraining.md4.コミット★
$ git commit -m "RubyTrainingStart"5.プッシュ
エラー発生。
原因:リモートリポジトリとの紐づけを行わずにプッシュしてしまったため。$ git push origin master fatal: 'origin' does not appear to be a git repository fatal: Could not read from remote repository.6.リモートリポジトリとの紐づけ★
$ git remote add origin リモートリポジトリのURL7.プッシュ
rejectedエラー発生。
原因:フェッチとマージをしていなかったため。$ git push origin master Enter passphrase for key 'SSH Keyの保存場所': To github.com:teraokamai/RubyTraining.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'リモートリポジトリのURL' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.8.フェッチ★
$ git fetch origin9.マージ
mergeエラー発生
原因:mergeコマンドのオプションで--allow-unrelated-historiesをつけていない為。
(Git 2.9から mergeコマンドとpullコマンドでは,--allow-unrelated-historiesを指定しない限り,無関係なヒストリを持つ2つのブランチをマージすることはできなくなった。)$ git merge origin/master fatal: refusing to merge unrelated histories10.マージ★
$ git merge --allow-unrelated-histories origin/master11.プッシュ★
成功!
$ git push origin master反省
初めてやることは片っ端からエラーを出していっている気がする。。
しっかりまとめて同じミスをしないようにする。
- 投稿日:2020-08-18T19:32:07+09:00
Github はじめの一歩 -Bracketsでも使えるようにしてみた-
はじめに
これは、今までGitに触れる機会が無かった私がGitの基本を身につけるために行ったことの備忘録です。
インストールなどの画像を撮り忘れてしまい、一部は外部記事の引用となっていますが、ご了承ください。
環境は以下の通り
- OS:Windows10
- Git Ver.:2.28.0.Windows.1
- エディタ:Brackets
手順
- 基本的なコマンドを学ぶ
- Gitのアカウントを作成し、リポジトリを作成する
- Gitをインストールする(Windows10)
- Git Bashの設定をする
- ローカルにリポジトリを作成する
- Gitにファイルをアップロード(push)する
おまけ
- Brackets Gitをインストールする
- Brackets Gitの使い方
- Git BashのデフォルトエディタをBracketsに設定する
1.基本的なコマンドを学ぶ
Gitでは基本的にターミナルでコマンドを実行して操作します。
Git独自のコマンドのほか、基本的なファイル操作を行うコマンドラインの知識も必要です。
今回は以下のサイトを使ってコマンドの学習を行いました。
Progate|コマンドライン
Progate|Git
重要なコマンドは以下の通りディレクトリ、ファイルを操作するコマンド
pwdカレントディレクトリ(現在操作しているディレクトリ)を表示します。
lsカレントディレクトリ内のファイルやディレクトリの一覧を表示します。
cd <ディレクトリ名>指定したディレクトリに移動します。絶対パス、相対パスどちらも使用できます。
ディレクトリ名を省略するとホームディレクトリに移動します。(作業フォルダーとは違うため注意)
mkdir <ディレクトリ名>ディレクトリを作成します。
rmdir <ディレクトリ名>`または`rm -fr <ディレクトリ名>指定したディレクトリを削除します。
touch <ファイル名>空のファイルを作成します。拡張子まで指定する必要があります。
mv <変更前ファイル名> <移動先ディレクトリ名>ファイルを指定したディレクトリに移動します。
移動先ディレクトリ名にファイル名を入力すると名前を変更することができます。
cp <コピー元ファイル名> <コピー先ディレクトリ名>ファイルをコピーします。名前を変更する場合はファイル名を入力します。
rm <ファイル名>ファイルを削除します。
Gitを使う上で基本となるコマンド
$ git config --global user.name <ユーザー名> $ git config --global user.email <メールアドレス>ユーザー名とメールアドレスを設定します。
git init git remote add origin <URL>リポジトリを作成します。
git clone <URL>指定したリポジトリを自分の環境へダウンロードします。
git add <ファイル名>指定したファイルをインデックスに登録します。
ファイル名は*.html
など柔軟な指定ができます。
git commit -m <メッセージ>変更した内容についてのメッセージを記録します。
git status現在作業しているローカルリポジトリの変更状態などが表示されます。
git diff変更内容を確認します。
git logコミットされた履歴を表示します。
git push origin masterリモートリポジトリにアップロードします。
git pull origin masterリモートリポジトリからダウンロードします。
2.Gitのアカウントを作成し、リポジトリを作成する
TechAcademyマガジン|今さら聞けない!GitHubの使い方【超初心者向け】
上記ページを参考に「Github」にてアカウントを作成します。
フリープランでも非公開のリポジトリを作成することができるので大丈夫です。
今回は非公開のテストリポジトリを作成しました。3.Gitをインストールする(Windows10)
Progate|【Windows】Gitの環境構築をしよう!
上記サイトを参考にGitをインストールします。
ダウンロードは「Git for Windows」から。
画像を撮り忘れてしまいました。4.Git Bashの設定をする
Git Bashを使いやすくするために設定をしていきます。
作業ディレクトリの設定
Git Bashのアイコンを右クリックし、プロパティを表示します。
1. リンク先に--cd-to-home
というコマンドオプションがあるので、削除します。
2. 作業フォルダーに起動時に移動したいフォルダーを入力します。(画像ではD:\git)
変更できたらOKボタンをクリックします。ユーザー名とメールアドレスの設定
Gitbashを起動して、コミットしたときに表示される名前とメールアドレスを設定します。
$ git config --global user.name "ユーザー名" $ git config --global user.email "メールアドレス"Git Bashのウィンドウやフォントの設定
使いやすいように見た目を設定します。
ウィンドウの左上を右クリックしてオプション画面を表示します。
Looksから画面や文字の色などを変更します。
Themeから好みのものを選んでかんたんに変更することもできます。
Textからフォントや文字のサイズを変更できます。
自分の見やすいフォント、サイズを選択します。
Windowでは、起動時の画面サイズを変更することができます。
Default Sizeで数字を設定して変更します。変更した結果を見るにはApplyボタン、設定を終了するにはSaveボタンをクリックします。
5.ローカルにリポジトリを作成する
Git Bashで設定した作業フォルダにローカルリポジトリを作成し、移動します。
今回はtestディレクトリを作成しています。mkdir test cd testtestディレクトリに移動したら、Github上に作成したリモートリポジトリに表示されているアドレスをコピーして
以下のコマンドを実行します。git init git remote add origin <URL>URLの部分は""で囲うようにしてください。
Git Bashでコピペをする
Git Bashでコピーするには
Shift + Insertキー
を押します。
Git Bash上では通常のアプリケーションとショートカットキーが違うので注意してください。Git initを取り消す
間違ってgit initしてしまった、上手くいかないためgit initからやり直したい場合には
.git
ディレクトリを削除します。rm -rf .git6.Gitにファイルをアップロード(Push)する
ローカルリポジトリ上にhello.htmlというファイルを作成した上で、Githubのリモートリポジトリにアップロード(Push)します。
最初に、変更したファイル(今回は作成したhello.html)をインデックスに登録します。git add hello.htmlインデックスに登録することで、変更したファイルを変更履歴とともにアップロードできるようになります。
続いて、変更した内容をリポジトリに記録するためコミットをします。
今回はhello.htmlを作成したことを記録します。git commit -m "add hello.html"ファイルが追加されているか確認するには、以下のコマンドを使用します。
git statusコマンドを実行すると変更されたファイルは赤字で、addされたファイルは緑字で表示されます。
準備ができたらいよいよアップロード(Push)します。
git push origin masterGithub上で確認をして上手くいっていればhello.htmlが追加されていることが確認できると思います。
Githubの基本的な使い方は以上です。
おまけ
主に使っているエディターBracketsでGitを使えるようにしました。
これらの作業はGitをインストールした後に行ってください。Brackets Gitをインストールする
拡張機能マネージャーから「Brackets Git」を検索し、インストールします。
URLからインストールする場合は以下のページからできるかもしれません。
Brackets Git | Github
わたしの環境では上手く行きませんでした。Brackets Gitの使い方
Bracketsで作業したいフォルダーを開きます。
右のサイドバーにある以下のボタンをクリックすると下部にBrackets Gitのウィンドウが表示されます。
init
ボタンでgit initが、clone
ボタンでgit cloneがかんたんに行えます。
また、以下のボタンをクリックするとGit Bashが起動するのでそちらから最初の設定をすることもできます。
個人的にはGit Bashから行う方がわかりやすいかなと感じます。Brackets Gitからgit initする
initボタンをクリックするとメニューボタンが表示されるようになります。
右側に▲-
というボタンがあるのでクリックし、最初の画面にorigin
、次の画面でURLを入力するとリモートと紐付けすることができます。Brackets Gitからgit cloneする
cloneボタンをクリックすると以下の画面が表示されます。
各欄を入力してOKをすればクローンが可能です。Brackets Gitからプッシュする
ファイルが変更されると、以下のように変更されたファイルがリストアップされます。
一番左端のチェックボックスでgit addするファイルを選択し、Commitボタンをクリックするとメッセージ入力ウィンドウが表示されます。
ウィンドウの上部には変更点が表示されています。
メッセージを入力してOKボタンを押すと以下のようにプッシュできるようになるので、ボタンをクリックしてプッシュができます。
コミットメッセージには日本語も使用可能でした。
Git BashのデフォルトエディタをBracketsに設定する
Git Bashから以下のコマンドを実行することで設定できます。
git config --global core.editor "brackets --wait"以上、Gitの導入とBracketsでの操作方法でした。
- 投稿日:2020-08-18T18:49:38+09:00
Gitlab⇒Githubに移行した話
会社の都合で移行するぞーってなった備忘録
1 旧リポジトリのミラーリポジトリを開発用PCに作る git clone --mirror git@gitlab_gitname tmp 2 ミラーリポジトリに入って内容物を確認 cd tmp ls -l 3 remote originのURLを新リポジトリに向ける git remote set-url origin git@github_gitname.git 4 新リポジトリにミラー内容をpush git push --mirror origin 5 新リポジトリからcloneしてくる git clone git@github_gitname.gitSSHでミラー出来ない場合はHTTPSでやるとうまくいった
SSHでミラーする場合はSSHキーを作り直すとうまくいくらしい
tmpファイルはあとでいらなくなるので消してもいい。
- 投稿日:2020-08-18T17:49:45+09:00
【GitHub×AWS】Permission denied (publickey). fatal: Could not read from remote repository.でGit pushできない時の対処法
前提条件
・AWS Cloud9(IDE)を使用
・GitHubをコードのバージョン管理として使用エラー内容
$ git push origin master Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.「公開鍵がないため、許可が却下されました。リモートリポジトリから読み込めません。正しいアクセス権限があるか、レポジトリが存在しているか確認して下さい。」という内容。
原因
GitHubに公開鍵の登録がないため、アクセス権限がなく拒否をされてしまった。
対処法
SSH鍵の作成
1.下記コマンドを入力。
your_email@example.com
はGitHubで登録しているメールアドレスに置き換える。$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"2.
Enter a file in which to save the key
で何も入力せず、エンターを押す。こうするとデフォルトのファイルの場所に作成される。> Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter]3.パスワードを設定する。確認も含めて2回入力する。
> Enter passphrase (empty for no passphrase): [Type a passphrase] > Enter same passphrase again: [Type passphrase again]ssh-agentにSSH鍵を追加
1.バックグラウンドでssh-agentを起動させる。
$ eval "$(ssh-agent -s)" > Agent pid 595662.ssh-agentにSSH鍵を追加させる。
$ ssh-add ~/.ssh/id_rsaSSH鍵をGitHubアカウントに追加
1.公開鍵の内容を下記のコマンドで表示。表示されたものをコピーする。この時スペースや改行などが入ると認識できないため、入らないように注意する。
cat ~/.ssh/id_rsa.pub3.SSH and GPG keys>SSH keys> New SSH keyを選択。
4.Titleに名前をつけて(なんでも良い)、Keyに先ほどコピーした公開鍵を貼り付ける。万が一無駄なスペースなどが入ってしまったら、この時点で削除する。そしてAdd SSH keyボタンを選択する。
エラーが出ずに鍵が作成されたら成功。
SSHの疎通確認
1.下記のコマンドを実行し、最後の方に
...successfully authenticated...
が表示されればSSHの疎通がされたことが確認できる。$ ssh -T git@github.comこうして鍵を登録したアカウントの権限があるリポジトリが、操作できるようになる。
参考
https://docs.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
https://docs.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account
https://utano.jp/entry/2017/10/amazon-linux-github-ssh-key/
- 投稿日:2020-08-18T13:02:27+09:00
怖くないよ、Git と GitHub
前書き
Git にビビり散らかしていた昔の自分向け
Git てなんだ
語弊を恐れずに言うならファイルのタイムマシン。
例えばプログラムを書いていて、間違った時に(ctrl or cmd)+zで戻したり、やっぱり戻したのを進めなおしたりすると思う。それのファイル版。分散型バージョン管理システム
addしてコミットしてプッシュしてふぁるすがるしでぱーじがこくーん
コマンドが多くて混乱することもあると思うが、一度覚えてしまえば気にならなくなる。
一旦落ち着いてメモをとるべし。もし先輩に教えてもらったメモがあるなら、そのメモと比較しながら内容を反芻できるななおグッド
- add
git add ファイル名
と使う
エイリアス(コマンドのショートカット)を切っている場合は別のコマンドを教わっているかもしれない。ga とか。
その場合は作業ディレクトリの .gitconfig か、 ~/.gitconfig を開いてみるとエイリアスが乗っている。このコマンドは、変更したファイルをコミット対象にするコマンド
コミットしたのに変更が反映されてないときは、この add コマンドを叩いていない可能性が大
- commit
git commit
と使う
怖いと思いがちなコマンド。取り返しがつかないと思いがちだが、1つ前のコミットは簡単にキャンセルできるので安心するべし。
このコマンドは、addされたファイルの差分を一つのコミットとして保存するコマンド。
もしコミットしてから間違いに気が付いた時は、冷静にその間違えを直す修正を add して commit すれば何も問題はない。
間違いが膨大すぎる、あるいは事情があって急ぎで戻したい時は、下記の打ち消しコミットをすれば大丈夫。まだ git を理解しきれていない時は、reset より revert のが安心
打ち消しコミットgit revert HEAD
- push
git push (エイリアス or URL) ブランチ名
と使う
怖いと思いがちなコマンド。実際怖いが、やらかした時の対処方法もしっかり用意されているので、巻き戻しの準備をしてから丁寧に打ち込もう
このコマンドは、リモートリポジトリにコミットした内容を送るコマンド。
よくみるのは、
git push origin feature/XX-1111
みたいな形。
origin はリモートリポジトリの URL を指すエイリアスとなっている。
feature/xx-1111 は githubflow でよく使われる機能開発ブランチの命名方法。featureブランチの、タスク管理ツールのチケットxx-1111番、という命名の仕方
git push
だけでも実行可能で、その時に実行されているのは、
git push エイリアス 現在のローカルブランチ名
である。もしやらかした時は、修正コミットをかけて、pushし直そう。
ここで重要なのは、必ずローカル環境でエラーが出ていないことを確認すること。修正をミスしていることに気がつかないことが多々あるので、動作確認をしっかり行ってから修正コミットを行おう
- branch
- 本体とは分けて作業を行える機能。そしてその機能を使うためのコマンド
もしこの機能がない場合、全員が同じブランチを触ることになるため、新機能開発などを一つの大きなコミットで行わざるを得なくなり、バグフィクスでの差分確認や有事の引き継ぎなどが大変になる
この機能があるおかげで、Aさんはバグフィクス用のブランチを切って作業、Bさんは新規機能開発のブランチを切って作業、という風にそれぞれの作業が混ざらずに自分の作業に集中できるようになる。ブランチは運用方法が色々あり、gitflow, githubflow などが有名
どんな運用でやっているのか、プロジェクト参加時にしっかり確認しよう。もし今現在でもよくわからない時は、今すぐ聞いてこよう。あとで運用方法と違うブランチの切り方をしてpushした方が迷惑がかかる
- merge
- merge は二つのブランチを一つにするコマンド。怖いと思いがちなコマンドだが、怖いというよりコンフリクトが面倒なコマンンド
revert で打ち消せるので、やらかしても安心。一番怖いのはやらかしに気がつかないで push することなので、mergeしたら動作確認は忘れずに。
コンフリクトしたら<======
=========
======>
こんな記号に挟まれた差分が発生する。ようはマージする側とされる側、両方に変更があるけどどちらを採用するかを問われているので、採用する側のコードを残してあげれば解決その時、コンフリクトの記号を消し忘れないように、検索で
=====
を検索してあげるとなおよし。コンフリクトの修正漏れを見つけられたりもする
- checkout
git checkout (ブランチ名 or ファイル名 or コミット番号)
と使う
ブランチの切り替えや、add していないファイルの差分を打ち消すのに使う
コミット番号を指定するとそのコミット番号の状態に飛べるが、ブランチ間の繋がりは失われるので、決してそこで作業はしてはいけない。
- pull
git pull (リモートのURL or エイリアス) ブランチ名
と使う
リモートのブランチをローカルのブランチに merge させるコマンド。ローカルがリモートから遅れている分を解消するコマンド
毎朝一回か、ブランチをきる前に派生元のブランチには pull をかけてあげよう。そうするとコンフリクトの可能性がグッと減る。
- diff
git diff (ファイル名)
と使う
作業前との差分を表示するコマンド。addする前にこのコマンドを叩いて差分に問題がないか確認s塗ることでミスが格段に減る
GitHub
英語がたくさんだしわけのわからない本番のソースコードが並んでいたりで怖いかもしれないが、大半は関係ないので気にしなくていい
ここでできるようになるべきはプルリクエストの作成
こちらなどでみるとわかりやすい。差分のあるブランチを push すると自動で GitHub がプルリクエストを作成するためのボタンを用意してくれるので、それを押して、表示された項目にプロジェクトの規定に則ったコメントを書いて作成するだけ。
それだけで初心者のうちは GitHub で行うべき作業の半分を行ったと言える(個人的な感想もし作成したプルリクエストがコンフリクトしていたら merge のボタンの代わりにコンフリクトしている旨が表示されているはずなので、ローカルで修正したものを作成してリモートに上げ直そう。
例えば develop ブランチに feature/hoge を merge しようとしてコンフリクトしていたら、ローカルで deveolop を最新の状態にしてから、feature/hoge に develop を merge してローカルでコンフリクトを解消してあげてリモートに上げ直すと、GitHub 上でもコンフリクトは解消されている。それでもよくわからない
作業完了までの流れをタスク分解してみよう。きっと不安なところが見つかるはずだ。あとはその不安なところを調べたり教えてもらったりすれば、一人で立派に作業できるようになる
- 投稿日:2020-08-18T02:37:10+09:00
GitHubにSSH接続する方法(秘密鍵、公開鍵の作成)
GitHubにSSH接続していないと、pushした際、以下のようなエラーになると思います。
$ git push origin master git@github.com: Permission denied (publickey).なので今回は、GitHubにSSH接続する方法をご紹介いたします。
秘密鍵と公開鍵を作成する
秘密鍵、公開鍵というのは、公開鍵暗号方式で使われる2種類のデータのことです。
簡単に言えば、公開鍵が鍵穴、秘密鍵が鍵のようなものです。
秘密鍵は自分で保持し、公開鍵はGitHubに送ります。まずは、この2つの鍵を作成します。
以下のコマンドで、鍵を保存するフォルダに移動します。
$ cd ~/.ssh以下のコマンドで、鍵を生成します。
$ ssh-keygen -t rsa以下の表示がでるので、Enterを押します。
Generating public/private rsa key pair. Enter file in which to save the key (/Users/yusukehorita/.ssh/id_rsa):さらに以下の表示がでるので、Enterを押します。
Enter passphrase (empty for no passphrase):さらに以下の表示がでるので、Enterを押します。
Enter same passphrase again:Your identification has been saved in /Users/yusukehorita/.ssh/id_rsa. Your public key has been saved in /Users/yusukehorita/.ssh/id_rsa.pub. The key fingerprint is: SHA256:Q+ZcarwT4Snlqa8hT1nFhT+xzpSGou3xQaKdyCONdns yusukehorita@hottayuusukenoMacBook-Air.local The key's randomart image is: +---[RSA 2048]----+ | .. | | .... | | = +o + | | XoBo B | | +.*S= = . | | + O*=+. o | | ..o=+oo . | | +.oE.. | | oo. | +----[SHA256]-----+これで秘密鍵と公開鍵が生成されました。
ちゃんと作成されたか、確認してみましょう。
$ ls id_rsa id_rsa.pub以上の2つのファイルが表示されたら、OKです。(id_rsa が秘密鍵、id_rsa.pub が公開鍵)
公開鍵をGitHubにアップする
以下のコマンドで公開鍵をコピーします。
$ pbcopy < ~/.ssh/id_rsa.pubhttps://github.com/settings/keys
ここから、GitHubの公開鍵の設定ページに飛んでください。画面の右上の New SSH key を押してください。
すると、次のような画面になるので、Title に公開鍵の名前(ご自身で決めてください)、key に先ほどコピーした公開鍵を貼り付けてください。
最後に、Add SSH key を押してください。
これで GitHubにSSH接続できました。
参考記事
https://qiita.com/shizuma/items/2b2f873a0034839e47ce
https://it-trend.jp/encryption/article/64-0089