git cherry
特定のブランチに送信されたが、マスター ブランチから欠落しているすべてのコミットを表示し、きれいな形式を使用してこれをログに記録するために使用したいと考えています。
私はこれを試しました:
git cherry master branch_name | grep "^+" | sed 's/^+ //' | xargs -I {} git --no-pager log --pretty=format:'%h,%an,%d,%ae,%ad,%s' --date=short -1 {}
これが行うことは次のとおりです。
git cherry master branch_name
- コードが branch_name にあり master にはないコミットのすべてのハッシュを端末の行ごとにリストし、ハッシュの前に + または - 記号を付けて逆にリストします。grep "^+"
- + で始まるものだけを取得します (実際には branch_name の master にないもの)sed 's/^+ //'
- 行から を削除して+
、ハッシュのみを取得できるようにします。xargs -I {} git --no-pager log --pretty=format:'%h,%an,%d,%ae,%ad,%s' --date=short -1 {}
- 各ハッシュをパラメーターとして git log に渡し、各ハッシュのフォーマットされたログを表示します。ここで--no-pager
は、git ログ ウィンドウを終了し、-1
1 つのコミットのみを表示することを意味します。
これに関する問題は、同じ行で git cherry から返された各ハッシュの各結果を連結し始めることです。行ごとに実行しないので、コピーして貼り付けたり、.csv ファイルに保存したりできます... > tmp.csv
。
別に使用できるものが他にあるかxargs
どうか、またはそれが実際に git log の問題であり、これが機能しないかどうかはわかりません。
私は何が欠けていますか?そして、私は何を間違っていますか?
初心者で申し訳ありません。