20210128のGitに関する記事は5件です。

GitHubがパスワード認証を廃止するらしいので

GitHubでは2021年8月13日にパスワード認証が廃止されるそうです。
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

という訳で、代わりに使用するであろう個人アクセストークンとsshの設定方法をメモします。

個人アクセストークン

以下のドキュメントを参考に取得します。
https://docs.github.com/ja/github/authenticating-to-github/creating-a-personal-access-token

取得手順

GitHubにログインした状態で、以下を実施します。

・設定画面( https://github.com/settings/tokens )を開く
・[Developer settings]をクリック
・noteにトークンのわかりやすい名前を記入
・権限を設定
・[Generate token] をクリック
・トークンをコピー (ページを離れると参照不可になる)
・パスワードの代わりに使用する

※トークンを使用してコマンドラインからリポジトリにアクセスするには、権限設定で[repo] を選択します。
※セキュリティ上の理由から、 GitHub は過去 1 年間使用されていない個人アクセストークンを自動的に削除します。

使用例

リポジトリのURLはリポジトリ画面の[Code]-[HTTPS]から取得できます。

使用例
$ git clone https://github.com/username/repository.git
Cloning into 'repository'...
Username for 'https://github.com': username
Password for 'https://username@github.com': ここで取得した個人アクセストークンを入力する

※個人アクセストークンは HTTPS Git 操作だけにしか使用できません。

SSH

以下のドキュメントを参考に設定します。
https://docs.github.com/ja/github/authenticating-to-github/connecting-to-github-with-ssh

設定手順

SSHキーを生成

以下のコマンドでSSHキーを生成します。
WindowsはGitBashで生成できます。

SSHキー生成
$ ssh-keygen -t ed25519    # 全てデフォルトでエンター
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/username/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

$ ls ~/.ssh    # id_ed25519  id_ed25519.pubが生成される。
authorized_keys  id_ed25519  id_ed25519.pub

GitHubアカウントへの新しいSSHキーの追加

GitHubにログインした状態で、以下を実施します。

・設定画面( https://github.com/settings/ssh )を開く
・[New SSH key]をクリック
・Titleを記入
・Keyにid_ed25519.pubの内容を記入
・[Add SSH Key]をクリック

使用例

リポジトリのURLはリポジトリ画面の[Code]-[SSH]から取得できます。

使用例
git clone git@github.com:username/repository.git
Cloning into 'repository'...
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?   ← yes を応答する

SSHキー生成の時にpassphraseを設定することでパスワードを要求させることもできます。

SSHキー生成(パスワードあり)
$ ssh-keygen -t ed25519    # 全てデフォルトでエンター
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/username/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):    ← ここでパスワード設定
Enter same passphrase again:                   ← ここでパスワード設定(再入力)
使用例(パスワードあり)
$ git clone git@github.com:com:username/repository.git
Cloning into 'repository'...
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,xx.xx.xx.xx' (RSA) to the list of known hosts.
Enter passphrase for key '/home/username/.ssh/id_ed25519':   ← パスワードを要求される

余談

EC2インスタンスでGitの設定(ユーザー名とEmailアドレスとか)せずにcommitを実行すると、Authorが以下のような値になるみたいです。
EC2 Default User <ec2-user@ip-xx-xx-xx-xx.ap-northeast-1.compute.internal>

おわり

ドキュメント見ればわかる内容ですが、ざっくりまとめでした。
今回は以上です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitHubがパスワード認証を廃止するらしいので

GitHubでは2021年8月13日にパスワード認証が廃止されるそうです。
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

という訳で、代わりに使用するであろう個人アクセストークンとsshの設定方法をメモします。

個人アクセストークン

以下のドキュメントを参考に取得します。
https://docs.github.com/ja/github/authenticating-to-github/creating-a-personal-access-token

取得手順

GitHubにログインした状態で、以下を実施します。

・設定画面( https://github.com/settings/tokens )を開く
・[Developer settings]をクリック
・noteにトークンのわかりやすい名前を記入
・権限を設定
・[Generate token] をクリック
・トークンをコピー (ページを離れると参照不可になる)
・パスワードの代わりに使用する

※トークンを使用してコマンドラインからリポジトリにアクセスするには、権限設定で[repo] を選択します。
※セキュリティ上の理由から、 GitHub は過去 1 年間使用されていない個人アクセストークンを自動的に削除します。

使用例

リポジトリのURLはリポジトリ画面の[Code]-[HTTPS]から取得できます。

使用例
$ git clone https://github.com/username/repository.git
Cloning into 'legoth-oss-deploy-tool'...
Username for 'https://github.com': username
Password for 'https://username@github.com': ここで取得した個人アクセストークンを入力する

※個人アクセストークンは HTTPS Git 操作だけにしか使用できません。

SSH

以下のドキュメントを参考に設定します。
https://docs.github.com/ja/github/authenticating-to-github/connecting-to-github-with-ssh

設定手順

SSHキーを生成

以下のコマンドでSSHキーを生成します。
WindowsはGitBashで生成できます。

SSHキー生成
$ ssh-keygen -t ed25519    # 全てデフォルトでエンター
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/username/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

$ ls ~/.ssh    # id_ed25519  id_ed25519.pubが生成される。
authorized_keys  id_ed25519  id_ed25519.pub

GitHubアカウントへの新しいSSHキーの追加

GitHubにログインした状態で、以下を実施します。

・設定画面( https://github.com/settings/ssh )を開く
・[New SSH key]をクリック
・Titleを記入
・Keyにid_ed25519.pubの内容を記入
・[Add SSH Key]をクリック

使用例

リポジトリのURLはリポジトリ画面の[Code]-[SSH]から取得できます。

使用例
git clone git@github.com:username/repository.git
Cloning into 'repository'...
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?   ← yes を応答する

SSHキー生成の時にpassphraseを設定することでパスワードを要求させることもできます。

SSHキー生成(パスワードあり)
$ ssh-keygen -t ed25519    # 全てデフォルトでエンター
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/username/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):    ← ここでパスワード設定
Enter same passphrase again:                   ← ここでパスワード設定(再入力)
使用例(パスワードあり)
$ git clone git@github.com:shiro01/goapp-tasks.git
Cloning into 'goapp-tasks'...
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,xx.xx.xx.xx' (RSA) to the list of known hosts.
Enter passphrase for key '/home/username/.ssh/id_ed25519':   ← パスワードを要求される

余談

EC2インスタンスでGitの設定(ユーザー名とEmailアドレスとか)せずにcommitを実行すると、Authorが以下のような値になるみたいです。
EC2 Default User <ec2-user@ip-xx-xx-xx-xx.ap-northeast-1.compute.internal>

おわり

ドキュメント見ればわかる内容ですが、ざっくりまとめでした。
今回は以上です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Gitのローカルブランチを削除(マージせずリモートで削除したブランチも一括で消したい)

gitで、マージ済みブランチを一括で消す方法は沢山でてくる。

git branch --merged|egrep -v '\*|develop|master'|xargs git branch -d

参考リンク
https://qiita.com/hajimeni/items/73d2155fc59e152630c4

でもマージしないでリモートで削除しちゃったブランチについて、
ローカルブランチを一括で消す方法が日本語記事で出てこないので、
調べると、英語圏にはあった。

git fetch -p && git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -D

引用元
https://medium.com/darek1024/how-to-clean-local-git-branches-that-were-removed-on-the-remote-4d76f7de93ac

これでRstudioのgitのブランチ選択欄に
削除したブランチの亡霊がたまるのを回避できるよ!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git push heroku masterでruby-2.6.5 on heroku-20とエラーが出た件

はじめに

今回はHerokuでのデプロイの際に以下のようなエラーが出たので解決策を記録しておこうと思います。

ターミナル
remote:  !
remote:  !     The Ruby version you are trying to install does not exist on this stack.
remote:  !     
remote:  !     You are trying to install ruby-2.6.5 on heroku-20.
remote:  !     
remote:  !     Ruby ruby-2.6.5 is present on the following stacks:
remote:  !     
remote:  !     - cedar-14
remote:  !     - heroku-16
remote:  !     - heroku-18
remote:  !     
remote:  !     Heroku recommends you use the latest supported Ruby version listed here:
remote:  !     https://devcenter.heroku.com/articles/ruby-support#supported-runtimes
remote:  !     
remote:  !     For more information on syntax for declaring a Ruby version see:
remote:  !     https://devcenter.heroku.com/articles/ruby-versions
remote:  !

開発環境

  • Ruby 2.6.5
  • Bundler 2.1.4
  • Rails 6.0.0
  • MySQL 5.6.50

解決方法

結論から言うとHerokuのstackruby 2.6.5に対応していないのが原因です。
今回の場合だと、stack-20が対応していないので、stackのバージョンを下げることで解決できます

エラー分の真ん中あたりにも
heroku-16
heroku-18などと提案してくれているので、stack-18にバージョンを下げます。

ターミナルで以下のコマンドを実行します。

ターミナル
% heroku stack:set heroku-18 -a アプリ名
# 以下のように出力されれば成功
Setting stack to heroku-18... done

次にheroku apps:infoコマンドでバージョンを確認してみましょう。

ターミナル
% hroku apps:info
=== my_app
Addons:         cleardb:ignite
Auto Cert Mgmt: false
Dynos:          
Git URL:        https://git.heroku.com/my_app.git
Owner:          メールアドレス
Region:         us
Repo Size:      0 B
Slug Size:      0 B
Stack:          heroku-18
Web URL:        https://my_app.herokuapp.com/

stackがheroku-18になっていることを確認しましょう。

ここまで来たら、Commit履歴を残しておくといいでしょう。

ターミナル
% git commit --allow-empty -m "Downgrading to heroku-18"

ターミナルで以上のコマンドを実行するとGitにCommit履歴が残っているので、pushしておきましょう。

ここまで来たらHerokuにpushしてデプロイしましょう。
git push heroku masterをターミナルで実行し、デプロイをしましょう。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

(Git・GitHub)チーム開発で必須コマンド

チーム開発でよく使用したコマンドをまとめました。

ターミナル
(1)$ git clone リポジトリURL
(2)$ git branch 
(3)$ git checkout 切り替えるブランチ名
(4)$ git checkout -b 切り替えるブランチ名
(5)$ git add ファイル名
(6)$ git commit -m "コメント"
(7)$ git push origin 作業ブランチ名
(8)$ git pull origin 取得するブランチ名
(9)$ git merge 取得するブランチ名

1.リポジトリのファイルをローカルPCに取得
2.ブランチ一覧が表示
3.ブランチ名を指定して切り替え
4.ブランチの作成と切り替えをまとめて実行できる。
5.インデックスに追加
6.メッセージをつけて変更履歴を保存
7.ローカルの変更をリモートリポジトリにアップロードする。
8.リポジトリの差分のデータを取得できる(fetchとmergeをまとめて実行できるコマンド)
9.ローカルブランチに反映する

補足

ターミナル
$ git fetch origin
$ git merge ブランチ名
  • リモートリポジトリからローカルにあるリモートリポジトリの最新版を取得する
  • ローカルブランチに反映する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む