我想用来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 中缺少的那些)sed 's/^+ //'
-+
从行中删除,以便我们只能获得哈希。xargs -I {} git --no-pager log --pretty=format:'%h,%an,%d,%ae,%ad,%s' --date=short -1 {}
- 将每个哈希作为参数传递给 git log 以显示每个哈希的格式化日志。这里--no-pager
的意思是退出 git log 窗口并-1
只显示 1 次提交。
这样做的问题在于,它开始将 git cherry 返回的每个散列的每个结果连接在同一行。它不会逐行执行,因此我可以复制粘贴它们,也可以使用 .csv 文件将它们保存到 csv 文件中... > tmp.csv
。
不确定是否还有其他我可以使用的东西,xargs
或者这实际上是 git log 的问题,这不起作用。
我错过了什么?我做错了什么?
谢谢大家,很抱歉成为菜鸟。