有时git commit的日志消息会提到其他提交的SHA。这种情况发生在git rebase --verbose
的建议日志消息中,您也可以手动添加('修复了abcd0123'中提供的错误)。
当重新定位时,提交的SHA会发生变化。有没有办法可以自动修复日志消息以获得新的SHA?通常,在100%的情况下这可能是不可能的(提交可能会完全消失,被压扁等)。但是90%的时候,简单的rebase在原始提交和重新提交的提交之间保持一对一的对应关系,因此应该可以在日志消息中重新映射SHA。
我试过Applying: My log message here.
old commit was 01234
new commit is abcde
,我希望打印出类似
--verbose
然后我可以使用它来手动调整日志消息(使用进一步的rebase ...这将反过来改变SHA ...所以它会很尴尬,但仍然可能)。但据我所知,git rebase
不会打印比正常模式更多的信息。
是否有一些神奇的工具可以为我重新定义和重写日志消息?在没有小马的情况下,我是否可以说服cells[0].innerHTML = connections[0];
cells[1].innerHTML = connections[1];
cells[2].innerHTML = connections[2];
cells[3].innerHTML = connections[3];
cells[4].innerHTML = connections[4];
cells[5].innerHTML = connections[5];
cells[6].innerHTML = connections[6];
cells[7].innerHTML = connections[7];
cells[8].innerHTML = connections[8];
cells[9].innerHTML = connections[9];
cells[].style.backgroundColor = "red";
打印有关新旧SHA的更多信息,以便我自己完成这项工作?
答案 0 :(得分:1)
有时git提交的日志消息会提到其他提交的SHA [...]在重新定位时,提交的SHA会发生变化。有没有办法可以自动修复日志消息以获得新的SHA?
您可以使用git patch-id
查找应用相同更改的提交,最强悍的方法是
git rev-list --no-merges --reflog --all \
| git diff-tree --stdin -p \
| git patch-id | sort > patch-ids
awk '{print $2,$1}' patch-ids | uniq -Df1
在您的仓库中查找应用类似补丁的每组提交。一些git log --grep=
应用于结果,并且可能对你的rev-list args有一些限制,应该让你到达你想去的地方。
在GNU /任何用
替换uniq的东西上uniq -f1 --all-repeated=separate | awk '{print $1}' | awk '{$1=$1; print}' RS=
为您分组提交ID。你可以使用join
或更多的awking在其他地方达到相同的效果。
您可以将git notes添加到提交(或任何对象),如果您尝试分发有关所发生事件的警告,这可能会有所帮助。