20191011のGitに関する記事は4件です。

ブランチ名をコミットメッセージで使いたい時のコピーコマンド

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`'"
cmcm

aliasの設定

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`'"
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

リリースされるプルリクエストは何だろう? リリース一覧を自動生成するシェルスクリプト

リリースの記録を取りたいのですが、いちいち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)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

gitの仕組みとか細かいことはいいから、とにかく使いたい人用

はじめに

これまで、gitってあまり触れてこなかったんですが、
codecommitにlambdaコードを管理してるので、デプロイとかいろいろ便利なので
使ってみました。gitってしっかり使いこなそうと思うと結構複雑なんだなとー

理解はあとでいいから、とにかく使う!というところを書いて行きます。

登場人物

codecommit
jenkins(デプロイでつかう。今回はほとんど登場しないです)
sourcetree

使った流れ

codecommit(AWS)に、リポジトリを作って、ブランチを切ります。

sourcetreeというgitを使うためのツールを使って、
そのブランチにコードを置きます。

jenkinsに作ったジョブでデプロイをします。

という流れでつかいました。
今回は、gitコマンドを中心にしていきます。
他のツールは説明に必要な部分だけ使いかたとか書きます。
細かく知りたい方は他のページをご参考に

実際にやったこと

codecommitでリポジトリを作る
(これは、ブランチを入れるための箱のようなものです。)

その中で、ブランチを作成。
(これは、コードの置き場と作業場所のようなものです。
と今は思っていただければいいかと思います。)

sourcetreeを使って、リポジトリを自分のローカルに持ってきます。
(ツールはgitが使えて、codecommitに繋げればなんでもいいかと)

で、
スクリーンショット 2019-10-11 13.33.28.png

sourcetreeのホーム画面の右上にある、
端末を使います。
すると、黒い画面(CUI)が出ます。
GUIよりも実はとっつきやすかったりしますよ。
こういうやつ
スクリーンショット 2019-10-11 13.36.55.png

ここで、

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

デプロイ

現場からは以上です。

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

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..e69de29
README.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 mvgit logの挙動を初めて知った。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む