git関連メモ
Githubのアカウントは作っているものとします。
環境はUbuntu、もしくはwslのubuntuです。
ssh設定
sshとは自分のパソコン内で秘密鍵と公開鍵を生成し、github上に公開鍵を登録することでユーザー名やパスワードの入力なしに安全に自分のリポジトリを操作できるようにする通信暗号化技術です。
鍵生成
生成する場所は ~/.ssh/ です。
最も一般的なrsa暗号を使用するといいと思います。
デフォルトの暗号強度である2048bitでも十分ですが、さらなるセキュリティの強化のために4096bitにしておきます。
コメントの部分にはgithubに登録しているメールアドレスを使用するといいでしょう。
$ ssh-keygen -t rsa -b 4096 -C "mailaddress@hoge.com"
# -t 暗号化方式を指定
# -b 暗号化強度を指定
# -C コメントを設定
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ts/.ssh/id_rsa): github_rsa # 秘密鍵の名前を指定(なんでもいい)
Enter passphrase (empty for no passphrase): #パスフレーズを設定したい場合は入力、いらない場合はそのままEnter
Enter same passphrase again: # 確認入力、いらない場合はそのままEnter
Your identification has been saved in github_rsa.
Your public key has been saved in github_rsa.pub.
ここで作成された github_rsa が秘密鍵で、github_rsa.pub が公開鍵です。
秘密鍵は誰にも知られてはいけません。
ssh config設定
~/.ssh 内にconfigファイルを作り、下記を追加します。
Host github*
HostName github.com
IdentityFile ~/.ssh/github_rsa
User git
Githubに公開鍵を設定
GithubのSettingのSSH and GPG keysでNew SSH Keyを選択します。
Titleを適当に設定して、Keyの部分に先程作った公開鍵 github_rsa.pub の中身をコピペします。
ちなみにファイルの中身をクリップボードにコピーするのはxclipを使ってできます。aptでインストールしましょう。
$cat github_rsa.pub | xclip -selection c
# -selection はコピー先を指定。cはclipboard
wslの場合は
$cat github_rsa.pub | clip.exe
でクリップボードへのコピーが可能です。
テスト接続
接続確認して、以下のように出ていれば成功です。
$ssh -T github
Hi user_name! You've successfully authenticated, but GitHub does not provide shell access.
localのgitにユーザー情報登録
Gitを初めて使うときは、user.nameとuser.emailを設定しないとコミットやプッシュができません。
$ git config --global user.name "Hoge Taro"
$ git config --global user.email hogetaro@example.com
これでgitを使う準備ができました。
git init
実際にソースコードをgitで管理し始めるとき、まずはgithubでリモートリポジトリを作成します。
この状態で、リモートでは一度もコミットをしていない状態です。
次に、ソースコードがあるディレクトリで次のコマンドを実行します。
$git init
$echo "# TEST" >> README.md //READMEファイルを作ります
$git add README.md //READMEファイルをadd
$git commit -m "first commit" //READMEファイルだけをコミット
$git remote add origin git@github.com:username/repositoryname.git //リモートを追加
$git push -u origin master //プッシュ
これで完了となります。
あとはこまめにcommitしたり、ブランチを切ったりして開発していきます。
Gitを使っていて困ったこと
commit pushしてしまったがgitignoreしたいとき
.gitignoreに書いただけではignoreされないので、
$ git rm -r --cached filename
とするとignoreすることができます。
できない理由はキャッシュにインデックスが残っているからです。