20211012のGitに関する記事は8件です。

Git関連で個人的に便利・役に立ったノウハウ

はじめに この記事では個人的に便利・役に立ったgit関連のノウハウをメモっております。 定期的に追加・修正を行いメンテナスしたいと思っております! 1. GitHubにSSHで接続する Pullやpushなど行う際に毎回ユーザーIDとパスワードの入力を求められます。GitHubにSSHで利用する公開鍵を登録する事で入力の手間を省けます。 手順 1.1. SSHキーを作成する ssh-keygen コマンドでSSHキーを作成します。 以下、オプションの詳細と補足になります。 ・SSHキーのサフィックスはコマンド実行年月日となります。(2021年10月12日実行した場合、id_rsa.2021-10-12になる) ・-b バイト長 ・-t 暗号化方式 ・-C コメント 実行コマンド $ ssh-keygen -b 4096 -t rsa -f ~/.ssh/id_rsa.`date "+%Y-%m-%d"` -C $USER-`date "+%Y-%m-%d"` Generating public/private rsa key pair. Created directory '/Users/(ユーザー名)/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/(ユーザー名)/.ssh/id_rsa.2021-10-12. Your public key has been saved in /Users/(ユーザー名)/.ssh/id_rsa.2021-10-12.pub. The key fingerprint is: SHA256:RtgqktRnBgenliUr52IXmBOkNaqIuJ+RB8vHb2zQjbk (ユーザー名)-2021-10-12 The key's randomart image is: +---[RSA 4096]----+ | .= +.+ | | + * X o | |o * O = o | |=. B = o | |= * +..+S | | + O..+.. | |. = +o . | | . = .E | | o o. | +----[SHA256]-----+ 上記のコマンドを実行後に.sshディレクトリ配下に秘密鍵と公開鍵が作成されている事を確認。 .pub拡張子が付いているファイルが公開鍵となります(.pub拡張子がついていない方が秘密鍵)。 実行コマンド $ ls ~/.ssh/ id_rsa.2021-10-12 id_rsa.2021-10-12.pub 以下のコマンドでmacに秘密鍵の登録を行う ssh-add -K ~/.ssh/id_rsa.`date "+%Y-%m-%d"` 1.2. GitHubへSSHキーを登録する 1.2.1. GitHubの設定画面へ移動 ・https://github.com/settings/keys または、以下を参考にしてください 1.2.2. SSHキーの登録 「New SSH key」ボタンを押下後に「1.1.SSHキーを作成する」で作成した公開鍵の登録を行います。 Titleは自分が分かりやすい文言を入力しましょう! Keyは以下のコマンドを実行して結果をペーストすると楽かもしません。 実行例 $ cat ~/.ssh/id_rsa.2021-10-12.pub | pbcopy 1.2.3. SSH接続の確認 Hi ユーザー名!が出力されればSSH接続成功です! $ ssh -T git@github.com Hi kenro17! You've successfully authenticated, but GitHub does not provide shell access. [WIP] 2. git configの設定 [WIP] 3. レビュー時に対象PRを取り込む方法 [WIP] 4. 困らないブランチ命名 [WIP] 5. コミットメッセージの分かりやすい書き方
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

DevOps+git+ssh 環境の作り方

DevOpsをssh接続でgitクローンする方法を毎回忘れるので、その備忘録。 環境 ・windows10 (gitクライアントソフトはsourcetreeを使った) sshkeyの作り方 SourceTreeからターミナルを起動する。(任意のディレクトリで構わない) $ ssh-keygen -t rsa -C "(登録のメールアドレス)" ターミナルは起動したままにする。 下は次回試してみる。 $ ssh-keygen -t rsa -C "(登録のメールアドレス)" -f (任意のrsaファイル名) DevOpsでKey登録 DevOpsで「_usersSettings/keys」ページから、NewKeyボタンで作成したrsa.pubの中身をコピーする。 (改行コードを含まない様にする) ssh-add でrsaファイルを登録する 起動したままのターミナルから下記コマンドを実行する。 $ eval `ssh-agent` Agent pid 716  #成功 $ ssh-add C:\\Users\\(LoginUser)\\.ssh\\id_rsa Enter passphrase for C:\Users\(LoginUser)\.ssh\id_rsa: Identity added: C:\Users\(LoginUser)\.ssh\id_rsa (メールアドレスが表示)  #成功 git clone してみる Permission denied, please try again. 上記が出たら、どこかが失敗している。 (作り直した方が早い)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

git で push 前の古い(最新じゃない)コミットメッセージを変更する方法

背景 古いコミットメッセージにプロジェクト名を追記したい。 手順 修正したいコミットまでの数を確認 $ git log # コミット番号は省略 [nest-retrospective] first commit # ← 最新のコミット(1番目) DailyReview機能、WeeklyReview機能作成 # ← 修正したいコミット first commit 一番新しいコミットを1とする。 git rebase -i HEAD~n のnには、修正したいコミットまでの数字が入る。 今回、最新のコミットから数えて2番目のコミットを変更したいのでnは2となる。 $ git rebase -i HEAD~2 # 最新のコミットから2つまでのコミットが表示される pick 2520311 DailyReview機能、WeeklyReview機能作成 pick 228e7f4 [nest-retrospective] first commit vimエディタが開くので、iを押して入力モードに切り替える。 エディタの下側に --INSERT--が表示される。 修正したいコミット先頭のpickをeditに書き換える。 edit 2520311 DailyReview機能、WeeklyReview機能作成 pick 228e7f4 [nest-retrospective] first commit esc(コマンドモードに切り替わる)→:→w→q(ファイルを上書き保存しvimエディタを終了)→Enter コミットメッセージを修正 $ git commit --amend -m "[nest-test] DailyReview機能、WeeklyReview機能作成" rebase処理を再開 $ git rebase --continue Successfully rebased and updated refs/heads/main. コミットメッセージを変更できたか確認 $ git log Date: Tue Oct 12 12:13:53 2021 +0900 [nest-retrospective] first commit Date: Mon Oct 11 17:06:23 2021 +0900 [nest-test] DailyReview機能、WeeklyReview機能作成 # ← 無事変更されてる Date: Sun Sep 26 18:49:07 2021 +0900 first commit 参考サイト Git commit メッセージの変更方法 Gitのコミットメッセージを後から変更する方法をわかりやすく書いてみた git rebase についてまとめてみた
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Git] git-flow

Gitのブランチモデル「git-flow」について調べてみた。 git-flowとは Vincent Driessen氏が提唱した「A successful Git branching model」というブランチモデルをサポートするツールのこと。 git-flowでは、役割の決められた5つのブランチを切り替えながら開発を行う。 ブランチ管理にルールを設けることで、不用意なマージなどの問題を避けることができる。 git-flowのメリット git-flowのメリットとして、以下の4つが挙げられてた。 ・本番リリースしたデータと、製作中のデータの区別が明確になる。 ・修正、リリース、機能追加などのいくつもの種類の違う作業を並行して進められる。 ・リリースした内容の調査が簡単になる。 ・git-flow用のコマンドでほとんど管理が行えるので、操作マニュアルを用意しやすい。 5つのブランチの役割 git-flowでは開発の内容によってブランチの切り替え行う。その5つのブランチの役割について紹介する。 ■ メインブランチ メインブランチは直接作業やコミットすることはなく、マージを行うだけのブランチ。 ・masterブランチ 安定して動作し、常にリリース可能な状態のブランチ。 ・developブランチ 開発の中心となるブランチで、最新の開発作業の変更を常に反映させている。 developブランチのコードが安定し、リリース準備ができたらdevelopブランチの変更をmasterブランチへマージする。 ■ サポートブランチ タスクごとにサポートブランチを作成し、作業を行う。 ブランチはメインブランチから作成され、マージ後に削除する。 ・ featureブランチ 開発を行うためのブランチで、新しい機能の追加や変更、バグの修正を行う。 developブランチから分岐して、developブランチにマージされる。 ・ releaseブランチ リリースをする段階になった時点で使用するブランチ。 developブランチから分岐して、developブランチとmasterブランチにマージされる。 ・ hot-fixブランチ masterブランチ内で重大なバグが見つかった場合は、hot-fixブランチをmasterブランチから切って修正を行う。修正が完了したら、リリース作業もこのブランチで行い、developブランチとmasterブランチにマージする。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

「git add .」実行時に「error: 'nest-retrospective/' does not have a commit checked out fatal: adding files failed」というエラーが発生した時の対処法

エラー発生時の状況 モノレポ方式でGit管理 ディレクトリの階層構造 nestjs_example nest-retrospective nestjs_exampleディレクトリにいる状態で、nest newでnest-retrospectiveディレクトリを作成後、git.addした時エラー発生 エラーメッセージ error: 'nest-retrospective/' does not have a commit checked out fatal: adding files failed ファイルの詳細を確認 (隠しファイルを含む) $ cd nest-retrospective/ $ ls -la total 1280 drwxr-xr-x 15 maiamea staff 480 10 12 07:40 ./ drwxr-xr-x 6 maiamea staff 192 10 12 07:37 ../ -rw-r--r-- 1 maiamea staff 631 10 12 07:37 .eslintrc.js drwxr-xr-x 9 maiamea staff 288 10 12 07:40 .git/ -rw-r--r-- 1 maiamea staff 391 10 12 07:40 .gitignore -rw-r--r-- 1 maiamea staff 51 10 12 07:37 .prettierrc -rw-r--r-- 1 maiamea staff 3339 10 12 07:37 README.md -rw-r--r-- 1 maiamea staff 64 10 12 07:37 nest-cli.json drwxr-xr-x 490 maiamea staff 15680 10 12 07:40 node_modules/ -rw-r--r-- 1 maiamea staff 618935 10 12 07:40 package-lock.json -rw-r--r-- 1 maiamea staff 1974 10 12 07:37 package.json drwxr-xr-x 7 maiamea staff 224 10 12 07:37 src/ drwxr-xr-x 4 maiamea staff 128 10 12 07:37 test/ -rw-r--r-- 1 maiamea staff 97 10 12 07:37 tsconfig.build.json -rw-r--r-- 1 maiamea staff 546 10 12 07:37 tsconfig.json 原因 nest-retrospectiveに.gitディレクトリがあったことで、別のGitリポジトリとして認識されエラーになった(nestjs_exampleのGitリポジトリの管理対象外とみなされた) 対処法1 .gitディレクトリを削除する。 # -r:再帰的に削除 (ディレクトリを削除) # -f:確認メッセージを表示せずに削除 rm -rf .git 対処法2 nest newする時に--skip-gitをつけると、.gitディレクトリは生成されない。 nest new --skip-git プロジェクト名 参考サイト 【Linux】lsコマンド
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【NestJS】「git add .」実行時に「error: 'nest-retrospective/' does not have a commit checked out fatal: adding files failed」というエラーが発生した時の対処法

エラー発生時の状況 モノレポ方式でGit管理 ディレクトリの階層構造 nestjs_example nest-retrospective nestjs_exampleディレクトリにいる状態で、nest newでnest-retrospectiveディレクトリを作成後、git.addした時エラー発生 エラーメッセージ error: 'nest-retrospective/' does not have a commit checked out fatal: adding files failed ファイルの詳細を確認 (隠しファイルを含む) $ cd nest-retrospective/ $ ls -la total 1280 drwxr-xr-x 15 maiamea staff 480 10 12 07:40 ./ drwxr-xr-x 6 maiamea staff 192 10 12 07:37 ../ -rw-r--r-- 1 maiamea staff 631 10 12 07:37 .eslintrc.js drwxr-xr-x 9 maiamea staff 288 10 12 07:40 .git/ -rw-r--r-- 1 maiamea staff 391 10 12 07:40 .gitignore -rw-r--r-- 1 maiamea staff 51 10 12 07:37 .prettierrc -rw-r--r-- 1 maiamea staff 3339 10 12 07:37 README.md -rw-r--r-- 1 maiamea staff 64 10 12 07:37 nest-cli.json drwxr-xr-x 490 maiamea staff 15680 10 12 07:40 node_modules/ -rw-r--r-- 1 maiamea staff 618935 10 12 07:40 package-lock.json -rw-r--r-- 1 maiamea staff 1974 10 12 07:37 package.json drwxr-xr-x 7 maiamea staff 224 10 12 07:37 src/ drwxr-xr-x 4 maiamea staff 128 10 12 07:37 test/ -rw-r--r-- 1 maiamea staff 97 10 12 07:37 tsconfig.build.json -rw-r--r-- 1 maiamea staff 546 10 12 07:37 tsconfig.json 原因 nest-retrospectiveに.gitディレクトリがあったことで、別のGitリポジトリとして認識されエラーになった(nestjs_exampleのGitリポジトリの管理対象外とみなされた) 対処法1 .gitディレクトリを削除する。 # -r:再帰的に削除 (ディレクトリを削除) # -f:確認メッセージを表示せずに削除 rm -rf .git 対処法2 nest newする時に--skip-gitをつけると、.gitディレクトリは生成されない。 nest new --skip-git プロジェクト名 参考サイト 【Linux】lsコマンド
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git よく利用するコマンド

はじめに gitコマンドを覚えてもちょっと時間があくとすぐに忘れるので、よく使うコマンドや、自分が現場で利用するgitの使い方をまとめてみようかと思います 基本操作 リポジトリのクーロン git clone <リポジトリのURL> ブランチの作成 git branch <ブランチ名> ブランチの切り替え git checkout <ブランチ名> 修正したファイルをステージングにあげる git add <修正したファイルのパス> コミット git commit -m <コミットメッセージ> リモートリポジトリにプッシュ git push origin <ブランチ名> よく使うコマンド ブランチを作成してそのまま作成したブランチに移動する git checkout -b <ブランチ名> 現在存在するブランチを確認 # ローカルブランチの確認 git branch # リモートブランチも含めた確認 git branch -a ブランチの削除 # マージ済みのローカルブランチを削除する git branch -d <ブランチ名> # マージしてないブランチを削除する git branch -D <ブランチ名> 変更した内容スタッシュする # スタッシュする git stash save "変更内容を記載" # 現在のスタッシュしているリストを確認 git stash list # スタッシュした内容を復元する git stash apply stash@{スタッシュ番号} # スタッシュを削除 git stash drop stash@{スタッシュ番号} コミットログを確認 git log rebase時のコンフリクト解決方法 # 作業してるブランチでrebase対象を取り込む git rebase <取り込みたいブランチ名> # 手動でコンフリクトを解決した後、ステージングにあげる git add <修正したファイル> # rebase続行 git rebase --continue # リモートブランチに強制的にpushする git push origin <ブランチ名> --force その他 随時更新予定
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git from 最初に入れるやつら2021

Summary 最初に入れるやつら2021に付け足すgitのパートが長いので分離。 Personal access tokensは微妙なのでsshでアクセス。 ローカルのユーザー名はhoge。 リモートのユーザー名はhuga。 ghq ~/.gitconfig [ghq] root = /path/to/src /path/to/srcは、/Users/USERNAME/srcやC:\\Users\\USERNAME\\srcにしている。バックスラッシュをエスケープして\\にする必要があることに注意。~や$HOMEは展開されない。 fzf on Mac ~/.zshrc # git # Exit with esc while choosing directory compdef _g g function g(){ case "$1" in root ) git config ghq.root;; * ) target="$(ghq list -p | sort -fV | fzf)" echo $target if [ -n "$target" ]; then cd "$target" fi;; esac } function _g() { _values '' 'root' } alias pbg='ghq list -p | sort -fV | fzf | pbcopy' fzf on Windows ~\Documents\PowerShell\profile.ps1 # git # Exit with esc while choosing directory function g ($1) { switch ($1) { 'root' { git config ghq.root } default { $target="$(ghq list -p | sort | fzf)" echo $target if ($target) { cd "$target" } } } } function pbg { ghq list -p | sort | fzf | pbcopy } Public key authentication Key pairをローカルで作成 ssh-keygen > Enter file in which to save the key (/path/to/.ssh/id_rsa): /path/to/.ssh/github > Enter passphrase (empty for no passphrase): /path/to/.ssh は、/Users/hoge/.sshとか。 passphraseは、くれぐれも忘れないように。 GitHubに登録 Settings > SSH and GPG keysに公開鍵の設定する。 pbcopy < /path/to/.ssh/github.pub alias ~/.ssh/config Host github HostName github.com User git Port 22 IdentityFile /path/to/.ssh/github UseKeychain yes AddKeysToAgent no 疎通確認 ssh -T github > Enter passphrase for /path/to/.ssh/github: > Hi huga! You've successfully authenticated, but GitHub does not provide shell access. passphraseがログイン時に必要。 gitとsshをリンク ~/.gitconfig [url "github:"] InsteadOf = https://github.com/ InsteadOf = git@github.com: リモートを確認する。 git remote -v 複数のアカウントを使い分け 複数のアライアスを準備 ~/.ssh/config Host github-1 HostName github.com User git Port 22 IdentityFile /path/to/.ssh/github-1 UseKeychain yes AddKeysToAgent no Host github-2 HostName github.com User git Port 22 IdentityFile /path/to/.ssh/github-2 UseKeychain yes AddKeysToAgent no 疎通確認 ssh -T github-1 ssh -T github-2 ユーザーの切り替え ~/.gitconfig [user] name = email = [includeIf "gitdir:/path/to/src/github.com/huga-1/"] path = ~/.gitconfig-1 [includeIf "gitdir:/path/to/src/github.com/huga-2/"] path = ~/.gitconfig-2 ディレクトリごとに~/.gitconfig-#へ振り分ける。 ~/.gitconfig-# [user] name = huga-# email = xxxxxxxx+huga-#@users.noreply.github.com [url "github-#:"] InsteadOf = https://github.com/ InsteadOf = git@github.com: # = 1, 2。 ~/.gitconfig-#に、ユーザーやsshの情報を書き込む。 References ローカルに点在するgitリポジトリを一元管理したいアナタに教えたいghq-migrator | Developers.IO 6歳娘「パパ、プロジェクトフォルダを見つけるのに何時間かけるの?」【ghq+fzf+zsh】 - Qiita さいつよのターミナル環境を構築しよう - Qiita GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita [備忘] 複数Githubアカウントでssh接続設定(config)を使い分ける手順 GitHub 接続時の ~/.ssh/config の書き方 git configをプロジェクトによって使い分ける - Qiita
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む