是否有可能在报告提交之前查看谁编辑了特定行git blame,例如给定行的提交历史记录?
例如,我运行以下(在极好的uncrustify项目上):
$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"
Run Code Online (Sandbox Code Playgroud)
如何在提交之前找出谁编辑了该行fe25b6d?又是谁之前编辑它是承诺?
有极少数的Q&A的上的git grafts对replace.搜索[git] + grafts + replace只发现了两个与5. what-are-git-info-grafts-for和git-what-a-a-graftcommit-or-a-graft-id相关的两个.git.wiki.kernel.org:GraftPoint上还有一个注释
被移植现在完全取代由replace和filter-branch,或者他们仍然需要一些特殊的情况(和向后兼容)?
一般来说,它们如何不同(例如哪些在回购之间运输),它们通常是如何相同的?我已经看到Linus似乎并不关心目前在关于提交代数的讨论(最大父母回到任何根种类)的问题"移植已经不可靠了."
编辑:找到更多信息.
搜索www.kernel.org/pub/software/scm/git/docs graft仅找到3个结果:
稍微宽泛的搜索发现RelNotes/1.6.5.txt包含:
- refs/replace/hierarchy被设计为可用作"移植"机制的替代,其附加优势是它可以跨存储库传输.
不幸的是,gitrepository-layout(5)还没有更新refs/replace/repository布局信息(和注释),也没有任何信息/移植的弃用说明.
这更接近支持我的想法,但我欢迎任何确认或澄清.
我使用perl脚本修改php git存储库中的所有制表符并将它们全部更改为4个空格.
$ find -iname \*.php -exec perl -pi -e "s/\t/ /g" {} \
Run Code Online (Sandbox Code Playgroud)
我可以提交这个更改git commit,但它会在我提交之后将我标记为内部所有更改行的作者git blame.
有没有办法实现这个大规模的改变,不会让我成为改变行的作者,但保留原作者?这是我们在项目中并不想丢失的很多历史.
我们用4个空格替换制表符的目的不是为了使git责备中的东西看起来不同,而是遵循适当的PEAR编码标准.例如没有标签,使用4个空格进行缩进.
git blame --ignore-revs-file显然是现代 Git 中存在的一个选项。
只有一个问题。它不起作用。
或者至少,它对我不起作用:
您可以将其添加到 shell 脚本中:
mkdir -p /tmp/blarp
cd /tmp/blarp
git init
cat << EOF > file.txt
one
two
three
EOF
git add file.txt
git commit --author "One <one@example.com>" -m 'one commit'
cat << EOF > file.txt
one
awesome
three
EOF
git add file.txt
git commit --author "Two <two@example.com>" -m 'two commits'
cat << EOF > file.txt
one
awesome
sauce
EOF
git add file.txt
git commit --author "One <one@example.com>" -m 'three commits'
git rev-parse …Run Code Online (Sandbox Code Playgroud) 我有一个问题,故事所描述的原因.为了尊重读者的时间,可以跳过故事部分.:)
简短:有没有办法检查对git存储库的更改,但是"隐藏"变更集元数据与一般消费(保留先前的变更集中的责任等)?
很长时间(随意跳过剩下的部分):我最近继承了一个代码库,从它的外观来看,它有一个最初的团队领导,鼓励他的每个开发人员 - 作为精神成长的练习 - 来觅食进入这个世界并找到一种他觉得最像禅宗的格式化风格......真正找到他们各种艺术风格,将它们应用于代码格式化,并在每天绘制代码杰作时过着艺术家的生活.出现了一些模式,例如随机选择语句之间的换行符数,包装每个方法参数 - 声明和调用......它一直在继续,但基本上我想在IDE中设置我的格式化首选项,将它转为松散几个小时,清理混淆的地方,并提交它.我从团队那里得到了一些(有效的)推迟,因为在注释中显示的容易看见的"最后一个触摸它"插槽中丢失了所有历史记录.有没有什么办法可以做出不会让那些东西消失的改变?我也在想,可能会有一个分支技巧,可以做分支,格式化分支,将另一个分支重新整合到那个分支中,以某种方式使我的"秘密提交"升级最新的保留旧的那些.
有人有什么建议吗?我完全愿意为这一次性招待黑客.:)
如果我克隆引导程序: git clone https://github.com/twbs/bootstrap
然后做一个 git 责备: git blame js/src/alert.js
看起来每一行最后都被同一个人触动过:
^7ffb61a (Patrick H. Lauke 2017-04-17 00:04:49 +0100 1) import Util from './util'
^7ffb61a (Patrick H. Lauke 2017-04-17 00:04:49 +0100 2)
^7ffb61a (Patrick H. Lauke 2017-04-17 00:04:49 +0100 3)
^7ffb61a (Patrick H. Lauke 2017-04-17 00:04:49 +0100 4) /**
^7ffb61a (Patrick H. Lauke 2017-04-17 00:04:49 +0100 5) * --------------------------------------------------------------------------
^7ffb61a (Patrick H. Lauke 2017-04-17 00:04:49 +0100 6) * Bootstrap (v4.0.0-alpha.6): alert.js
^7ffb61a (Patrick H. Lauke 2017-04-17 00:04:49 +0100 7) * Licensed …Run Code Online (Sandbox Code Playgroud)