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

git grepを使って検索し、指定した箇所のgithubのリンクを取得するスクリプト

概要 git管理されているファイルから任意の文字列を指定して検索し、該当するgithubのURLを開くスクリプトです 現在いるブランチのURLを開きます 行数も指定されます  業務にてコードの質問や、レビューなどで該当箇所をgithubのリンクで共有することが多々あります。 コマンドラインから検索が完結し、そのままURLに飛ぶようにすると作業効率が上がりそうだったので作成してみました。 以前にpecoの記事を投稿したのですが、その応用です。 pecoを使ってgithubのcompare URLを簡単に生成する function gg-line() { if [[ -z $1 ]];then echo "string arg is needed." return fi REPO=`git remote -v | grep fetch | awk -F '[:. ]' '{print $3}'` if [[ -n "$REPO" ]];then BRANCH=`git branch --contains | awk -F '[ ]' '{print $2}'` # 指定が取れない場合はmasterにする(引数にmasterを指定しても良いかも) if [[ -z $BRANCH ]];then BRANCH='master' fi PATHLINE=`git grep -nF $1 | peco | awk -F '[: ]' '{print $1"#L"$2}'` if [[ -z $PATHLINE ]];then return fi URL="https://github.com/$REPO/blob/$BRANCH/$PATHLINE" echo $URL && open $URL fi } 使用例 引数の文字列が検索されます $ gg-line test
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Git ローカルのmainブランチを使わない運用

問題 $ git switch main してブランチ切り忘れたまま作業して $ git push したことないでしょうか... 誤ってmainブランチをpushしてしまうことを未然に防ぐための対策をご紹介します。 (GitHubでブランチ保護設定もお忘れなく...でもやらないことに越したことはない) 対策 ローカルのmainブランチを削除する方法をご紹介します。 ローカルのmainブランチはなくても困ることはないので、削除してしまいます。 ないものはpushできない道理。 mainブランチがない場合の運用手順もご紹介します。 ローカルリポジトリのmainブランチを削除する $ git branch -a * main remotes/origin/HEAD -> origin/main remotes/origin/main $ git switch -d origin/main $ git branch -D main $ git branch -a * (HEAD detached at origin/main) remotes/origin/HEAD -> origin/main remotes/origin/main これでローカルのmainブランチが削除されました。 ブランチを切る 新しく topic-123 というブランチを origin/main から切り出します。 $ git switch -c topic-123 origin/main $ git branch -a * topic-123 remotes/origin/HEAD -> origin/main remotes/origin/main この後は普通にcommitしていきます。 プッシュする $ git push -u origin HEAD origin HEAD を指定することで、現在のブランチ名と同じ名前のリモートブランチを作ってくれます。 これで origin main やブランチ名を打ち間違えることも予防できます。 $ git push -u オプションで上流ブランチをセットしてるので、2回目以降は git push のみでokです。 フェッチする リモートリポジトリの最新情報を取得します。 $ git fetch ローカルの main ブランチはないので、 git pull は不要です。 作業ブランチに最新のコミットを反映する リモートブランチから最新コミットをマージしてあげればokです。 $ git rebase origin/main or $ git merge origin/main よくある流れとしては下記の流れでしょうか。 # 作業ブランチへ切り替え $ git switch topic-123 # リモートリポジトリの最新情報を取得 $ git fetch # 作業途中のファイルがあればstashしておく $ git stash -u # 最新コミットを作業ブランチに取り込む $ git rebase origin/main # stashしたファイルを戻す $ git stash pop まとめ # リモートリポジトリを最新状態にする $ git fetch # 新しいブランチを切る $ git switch -c topic-123 origin/main # 最新コミットを作業ブランチに取り込む $ git rebase origin/main # 作業ブランチをリモートリポジトリへプッシュする $ git push -u origin HEAD 別の方法 masterにpushを試みた際に強制終了する方法もあります。 gitでmasterにpushできないようにする 参考 https://qiita.com/mizukmb/items/cc603cf5654e6531c8e7
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Go + HEROKU の備忘録

HEROKUアプリケーションの確認 HEROKUにログイン heroku login HEROKUのアプリケーション一覧の確認 heroku list HEROKU アプリケーションの作成と削除 HEROKUのページから作成と削除を行うことができますが、コマンドでも可能です。 作成 heroku create <アプリ名> アプリのrename heroku rename <新しい名前> --app <古い名前> 削除 heroku apps:destroy --app アプリ名 ClearDB(MySQL)との接続 localでないDB(MySQL)を使用したい場合は、アプリケーションを作成し、ResourcesのAdd-onesでClearDBを追加します。 次にconfigを確認しプログラム(Go)にDBと接続するための接続情報を加えます。 heroku config --app <アプリ名> 自分でconfigを追加していない場合は基本的にDATABASE_URLが帰ってきます。 DATABASE_URLを分解することでプログラム(Go)をDBに接続することができます。DATABASE_URLのフォーマットが下記のようになっています。 DATABASE_URL='mysql://username:password@hostname/database_name?reconnect=true' 下記の4つがDBに接続するために必要になります。 UserName Password HostName Database_name MacのTerminalで環境変数としてDBの接続情報をセット export DB_USER= \ DB_PASS= \ DB_IP=127.0.0.1 \ DB_PORT=3306 \ DB_NAME= 外部DBへのアクセス 外部のMySQLDBに接続するためのコマンドです。 コマンドにpasswordを使用すると警告が出ますが、まぁ問題ないと思います。 mysql --host=hoge --user=hoge --password=hoge <Database_name> アプリを開く heroku open HEROKU Logの確認 使っていないアプリケーションや現在使用中のアプリケーションのログの取得コマンド heroku logs --tail --app <アプリ名> アプリケーションの再起動 何か動作が怪しい時などにとりあえず再起動します。 heroku restart --app <アプリ名> HEROKUへのデプロイ デプロイ方法1 git push heroku master git push heroku <現在いるブランチ名>:master デプロイ方法2 コンテナでデプロイする方法です。下記の記事を参考にデプロイしました。 正直かなり前にやって以来コンテナでデプロイはしていないのであまり覚えていません。今度の機会に追記したいと思います。 ありがとうございました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

gitでmerge済みのlocal branchを一括で削除する

下記のコマンドでOK # check git branch --merged | grep -v main # bulk delete git branch --merged | grep -v main | xargs -I{} git branch -d {} 役に立った方はLGTMお願いします.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

「github cliのコマンドを`git ~`でタイポする」問題の解決法

こんなことありませんか? issueのリストとってきたろ! $ git issue list > git: 'pr' is not a git command. See 'git --help'. # ア゛ア゛ア゛ア゛ア゛ tldr .gitconfigに⬇を追記 gitconfig [alias] issue = !"f() { local s=$1; shift; \ while [ $# -gt 0 ]; do s=\"$s $1\"; shift; done;\ gh issue $s; }; f" 解決法(失敗) fishを使っているのでabbrでやろうとした。 config.fish $ abbr "git issue" "gh issue" > abbr --add: Abbreviation 'git issue' cannot have spaces in the word スペース込はできないらしい。 解決法(あまりうれしくない) alias gis "git issue" 打ち慣れてないコマンドを新しく覚えたくない(怠惰) 解決法 .gitconfigに以下を追記。(dotfileで管理したかったので私は~/dotfiles/.gitconfig_sharedに書いてます) gitconfig [alias] issue = !"f() { local s=$1; shift; \ while [ $# -gt 0 ]; do s=\"$s $1\"; shift; done;\ gh issue $s; }; f" 嬉しくなったのでissueだけじゃなくてprとかも登録しました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む