memorandum

IT技術の習得を記録します

GitHub ローカルとリモートの接続開始方法

・あらかじめGitHubのアカウントを取得しておく

・ターミナルでユーザー名とemailを登録する

git config --global user.name "ユーザーネーム"
git config --global user.email メールアドレス

SSHの鍵を取得する

$ ssh-keygen -t rsa -b 4096 -C "メールアドレス"

* -t オプション 鍵のタイプを指定  

* -b オプションで、鍵の長さを指定 (鍵が短いとセキュリティ的に危険) 

* ssh-keygenのデフォルト値2,048ビットのまま生成・利用される場合も多い

* GitHubの推奨は4,096ビット

* より安全性の高い値を利用

* -C オプションで、鍵にコメントを付加。なくても問題なし

* 複数の鍵を管理するときは、何の鍵なのかを分かりやすくするため、 コメントを有効的に利用

・鍵の生成場所とファイル名を確認する

Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): /Users/hoge/.ssh/id_rsa_github

パスフレーズ入力画面でパスフレーズを入力せずenterで進む

Enter passphrase (empty for no passphrase): 【パスフレーズを入力。画面には表示されません】
Enter same passphrase again: 【パスフレーズを入力。画面には表示されません】

・公開鍵が作成される

+---[hogehoge]----+
|                 |
|     .o          |



| o o   .         |
+----[hogehoge]——+

・生成時に指定した場所に鍵が作られるので確認

$ ls ~/.ssh/id_rsa_github*
/Users/hoge/.ssh/id_rsa_github     /Users/hoge/.ssh/id_rsa_github.pub

SSHのconfigファイルを編集

GitHubSSH接続する際に、どの秘密鍵を指定するのかを管理する

以下の設定を、ファイルが存在しない場合は新規作成し、すでにあれば追記

$ vim ~/.ssh/config
Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_github

この設定により、ssh githubと入力するだけで、ここで指定したホスト名、ユーザー名、秘密鍵が自動で指定される

・id_rsa_github.pubの内容をコピーする

cat /Users/hoge/.ssh/id_rsa_github.pub | pbcopy

github側のsettingからsshkeyの登録

f:id:IT_expertise_diary:20190218191100p:plain f:id:IT_expertise_diary:20190218191106p:plain f:id:IT_expertise_diary:20190218191111p:plain f:id:IT_expertise_diary:20190218191116p:plain

・~/.gitconfigに以下を追記する

参考

https://git-scm.com/book/ja/v1/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-%E6%9C%80%E5%88%9D%E3%81%AEGit%E3%81%AE%E6%A7%8B%E6%88%90

カレントブランチと同名のリモートブランチがあれば、そこに pushする設定

[push]
default = current

・cloneする

[先にX-codeでプロジェクトディレクトリがあらかじめ作成されている場合]

参考

https://help.github.com/articles/adding-a-remote/

git remote add origin [リモートリポジトリのSSHのcopy]
git push --set-upstream origin master

[先にGitHubリポジトリを作成してからcloneする場合]

参考

https://git-scm.com/book/ja/v1/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-Git-%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AE%E5%8F%96%E5%BE%97

git clone [リモートリポジトリのSSHのcopy]

1番目と2番目のコミットを合体させて、2番目だけ別にする場合

git rebase -i --keep-empty --autosquash $(git show-branch --merge-base master HEAD)

viで別にしたいコミットをコピーして一番下へ 合体させたいコミットを二番目へ 合体させたいコミットのpickをfに書き換える

git push --force-with-lease