- 投稿日:2019-10-11T19:49:10+09:00
ブランチ名をコミットメッセージで使いたい時のコピーコマンド
e.g.)
ブランチ名:feature/add_model_for_new_features
ターミナルに出力したい
コマンド:
cm
alias cm="git symbolic-ref --short HEAD | sed -e 's/_/ /g' | sed -e 's/.*\///g'" cm # => add model for new featuresクリップボードにコピーしたい
コマンド:
cmp
クリップボードにコピーされるためcmd-vで"add model for new features"の貼り付けができる
alias cmp="git symbolic-ref --short HEAD | sed -e 's/_/ /g' | sed -e 's/.*\///g' | tr -d '\n' |pbcopy" cmpブランチ名をコミットメッセージにしてコミット
コマンド:
cmcm
もう一気にコミットまでしたい場合。
alias cmcm="git commit -a -m '`cm`'" cmcmaliasの設定
alias cm="git symbolic-ref --short HEAD | sed -e 's/_/ /g' | sed -e 's/.*\///g'" alias cmp="git symbolic-ref --short HEAD | sed -e 's/_/ /g' | sed -e 's/.*\///g' | tr -d '\n' |pbcopy" alias cmcm="git commit -a -m '`cm`'"
- 投稿日:2019-10-11T16:36:35+09:00
リリースされるプルリクエストは何だろう? リリース一覧を自動生成するシェルスクリプト
リリースの記録を取りたいのですが、いちいちGithubに行って、今回リリースされるのは何かな? と調べるのが面倒だったのでコマンドを作りました。
もっと良い方法がある気がするので、「うちではこうしているよ!」とか、コメントもらえると嬉しいです。shell変数の
before_release_date
に前回のリリースをした時間を入れて以下のコマンドを実行すると、前回リリースからの差分のプルリクエスト一覧が取れます。
ブランチ名は各自の環境によって master だったり develop だったりすると思うので適時読み替えてください。$ before_release_date=2019/10/1:14:00; $ git checkout develop $ git pull upstream develop $ git log --merges --since=${before_release_date} --first-parent --reverse --pretty=format:"* %b %s"実行サンプルは以下の通り
$ git log --merges --since=2019/10/10 --first-parent --reverse --pretty=format:"* %b %s" * プルリク1 Merge pull request #2355 from yamotuki/fix_hogehoge * プルリク2 Merge pull request #2367 from yamotuki/fix_fugafuga補足
git checkout じゃなくて git switch を使えや! と怒る方もいるかもしれませんが、古い環境を使っている方もいるかと思って checkout にしてあります。適時読み替えてください。
おまけ
リリース記録のために markdown 記法で残しておくために以下のようなシェル芸を使ってリスト作ってます。
いい感じにURLを自分たちのものを入れて使ってみてください。$ git log --merges --since=${before_release_date} --first-parent --reverse --pretty=format:"* %b %s" | perl -ple 's/Merge.*#(\d*).*$/(https:\/\/github.com\/hogepiyo\/pull\/$1)/' | perl -ple 's/\*\s(.*)\(h/\* [$1]\(h/' * [プルリク1 ](https://github.com/hogepiyo/pull/2311) * [プルリク2 ](https://github.com/hogepiyo/pull/2296)
- 投稿日:2019-10-11T14:23:34+09:00
gitの仕組みとか細かいことはいいから、とにかく使いたい人用
はじめに
これまで、gitってあまり触れてこなかったんですが、
codecommitにlambdaコードを管理してるので、デプロイとかいろいろ便利なので
使ってみました。gitってしっかり使いこなそうと思うと結構複雑なんだなとー理解はあとでいいから、とにかく使う!というところを書いて行きます。
登場人物
codecommit
jenkins(デプロイでつかう。今回はほとんど登場しないです)
sourcetree使った流れ
codecommit(AWS)に、リポジトリを作って、ブランチを切ります。
↓
sourcetreeというgitを使うためのツールを使って、
そのブランチにコードを置きます。
↓
jenkinsに作ったジョブでデプロイをします。という流れでつかいました。
今回は、gitコマンドを中心にしていきます。
他のツールは説明に必要な部分だけ使いかたとか書きます。
細かく知りたい方は他のページをご参考に実際にやったこと
codecommitでリポジトリを作る
(これは、ブランチを入れるための箱のようなものです。)その中で、ブランチを作成。
(これは、コードの置き場と作業場所のようなものです。
と今は思っていただければいいかと思います。)sourcetreeを使って、リポジトリを自分のローカルに持ってきます。
(ツールはgitが使えて、codecommitに繋げればなんでもいいかと)sourcetreeのホーム画面の右上にある、
端末を使います。
すると、黒い画面(CUI)が出ます。
GUIよりも実はとっつきやすかったりしますよ。
こういうやつ
ここで、
git checkout -b 新しいブランチ名 :新しいブランチを作成して、そのブランチに移動します。masterという名前のブランチがあると思いますが、基本そこには何も置かないし作業もしないと思ってもらえれば
いいと思います。(運用の仕方にもよるので一概には言えないですが、基本的にはということで)git branch -a : リモートとローカルブランチの両方のあるなしが確認できます。あと、自分が今いるブランチの場所を*で教えてくれます。ざっくり、リモートブランチは、codecommitにあるブランチ
ローカルブランチは自分のPCにあるという感じのイメージです。
ローカルブランチにcodecommitに置きたいファイルなどを持ってきます。たとえば、ファイルダウンロードして、そのディレクトリから、ローカルブランチにコピー
とかで持ってきます。
そしたら、git add .します。これは、今自分がいる階層にあるファイルをaddするよって意味です。
git commit -m "最初のコミット"これで、コミット(確定させるみたい感じの意味です)して、これはなにをしたのかを -mオプションをつけて書いておきます。
他の人が見た時に概要が掴めるようにです。git push -n :実際にpushするときは -nを取って実行する。最後にpushします。-nはdry-run(実際にはpushしないで、もししたらどうなるかの結果を表示してくれます)
これで、codecommit上に、自分が更新、作成をしたファイルを置くことができます。そしたら、デプロイしましょう。
まとめ
リポジトリ作成
↓
リポジトリクローン
↓
ブランチ作成
↓
git add
↓
git commit
↓
git push
↓
デプロイ現場からは以上です。
- 投稿日:2019-10-11T09:25:40+09:00
commit 履歴を保持したままディレクトリ移動
概要
git mv
を行うとgit log -p
使用時に履歴を閲覧できない- filter-branch で過去の commit 内でディレクトリを移動することで閲覧できる
git filter-branch -f --prune-empty --tree-filter ' dir="path/to/movedir" if [ ! -e "$dir" ] then mkdir -p "$dir" git ls-tree --name-only $GIT_COMMIT | xargs -I files mv files "$dir" fi'git mv 使用時
$ git init Initialized empty Git repository in /private/tmp/git-log/.git/ # README.md 作成, 編集の commit 作成 $ touch README.md $ git add README.md $ git commit -m "Initial Commit" [master (root-commit) 0cb6fee] Initial Commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 README.md $ echo "git log の確認" >> README.md $ git add README.md $ git commit -m "README.md 編集" [master 2f6c8a2] README.md 編集 1 file changed, 1 insertion(+)
git log
を確認します$ git log -p README.md commit 2f6c8a27507e9838485412cf8499cdd1632c6af0 (HEAD -> master) Author: otsuka.kentaro <kentaro_otsuka@metaps.com> Date: Fri Oct 11 09:09:00 2019 +0900 README.md 編集 diff --git a/README.md b/README.md index e69de29..7923e00 100644 --- a/README.md +++ b/README.md @@ -0,0 +1 @@ +git log の確認 commit 0cb6fee47f54cb31ef07f4ad5a9b748306661aa9 Author: otsuka.kentaro <kentaro_otsuka@metaps.com> Date: Fri Oct 11 09:08:26 2019 +0900 Initial Commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29README.md を移動した後に
git log
を確認してみます# README.md の移動 $ mkdir foo $ git mv README.md foo/README.md $ git commit -m "README.md 移動" [master c3bbb6d] README.md 移動 1 file changed, 0 insertions(+), 0 deletions(-) rename README.md => foo/README.md (100%) $ git log -p foo/README.md commit c3bbb6d43f95f9500ec7255d3e031521a87937ae (HEAD -> master) Author: otsuka.kentaro <kentaro_otsuka@metaps.com> Date: Fri Oct 11 09:11:40 2019 +0900 README.md 移動 diff --git a/foo/README.md b/foo/README.md new file mode 100644 index 0000000..7923e00 --- /dev/null +++ b/foo/README.md @@ -0,0 +1 @@ +git log の確認
diff --git a/foo/README.md b/foo/README.md
コマンドを発行しているようなので過去の履歴が見れません。git filter-branch 使用時
README.md の移動前の commit から。
$ git log commit c3bbb6d43f95f9500ec7255d3e031521a87937ae (HEAD -> master) Author: otsuka.kentaro <kentaro_otsuka@metaps.com> Date: Fri Oct 11 09:11:40 2019 +0900 README.md 移動 commit 2f6c8a27507e9838485412cf8499cdd1632c6af0 Author: otsuka.kentaro <kentaro_otsuka@metaps.com> Date: Fri Oct 11 09:09:00 2019 +0900 README.md 編集 commit 0cb6fee47f54cb31ef07f4ad5a9b748306661aa9 Author: otsuka.kentaro <kentaro_otsuka@metaps.com> Date: Fri Oct 11 09:08:26 2019 +0900 Initial Commit $ git checkout -b filter-branch 2f6c8a27507e9838485412cf8499cdd1632c6af0 Switched to a new branch 'use-filter-branch'filter-branch で移動後
git log
で確認$ git filter-branch -f --prune-empty --tree-filter ' dir="foo" if [ ! -e "$dir" ] then mkdir -p "$dir" git ls-tree --name-only $GIT_COMMIT | xargs -I files mv files "$dir" fi' $ git log -p foo/README.md commit 3ae7d6d4ce007282e189b3ed5b56303990eca082 (HEAD -> use-filter-branch) Author: otsuka.kentaro <kentaro_otsuka@metaps.com> Date: Fri Oct 11 09:09:00 2019 +0900 README.md 編集 diff --git a/foo/README.md b/foo/README.md index e69de29..7923e00 100644 --- a/foo/README.md +++ b/foo/README.md @@ -0,0 +1 @@ +git log の確認 commit 867f6f0d570bad36cd0deaae073ea67f690d1cb0 Author: otsuka.kentaro <kentaro_otsuka@metaps.com> Date: Fri Oct 11 09:08:26 2019 +0900 Initial Commit diff --git a/foo/README.md b/foo/README.md new file mode 100644 index 0000000..e69de29まとめ
- 普段 GUI ツールで git 操作を行っているので
git mv
とgit log
の挙動を初めて知った。