删除本地引用分支(refs/notes/origin/commits)有点困难.我能够使用该命令删除远程存储库中的分支(refs/notes/origin/commits)
git push origin :refs/notes/origin/commits
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在我的本地存储库中删除相同的分支时,我得到以下错误
[User@centos Clone]# git branch -rd refs/notes/origin/commits
error: remote branch 'refs/notes/origin/commits' not found.
Run Code Online (Sandbox Code Playgroud)
有什么建议?
出于某些原因,我必须重写我的git存储库的整个历史记录来更改每次提交的committer_id.但是,我附加了一个或多或少每个提交的注释,并使用git-filter-branch来更改committer_id将在逻辑上创建新的提交,留下注释.有没有办法将笔记复制到匹配的新提交中?
这个主题似乎提出了类似的问题,但在2011年没有解决方案.
谢谢您的帮助!
我知道克隆后可以使用以下方式获取git note:
git fetch origin refs/notes/*:refs/notes/*
Run Code Online (Sandbox Code Playgroud)
甚至可以在git config中进行设置以始终获取。
但是,在克隆时,我没有得到注释,因此我必须先克隆然后提取。尽管我确实看到--mirror
在克隆时使用确实也会得到注释。但是,我的最佳设置是无需克隆就可以克隆任何存储库(因为这意味着--bare
并且还会获取其他不需要的引用)并获得注释。
有什么方法可以设置例如git config来在克隆时获取特定的其他引用?
例如:
git commit -am "Something"
git notes append -m "Dark "
git commit -am "Something"
git notes append -m "Side"
git rebase -i
# now I squash two commits and I expect to see "Dark Side" here
# but it show that note is undefined
git notes show
Run Code Online (Sandbox Code Playgroud) 我想在树对象上附上一个注释.但是,为了做到这一点,我首先需要知道树对象的哈希值.对于作为我的存储库一部分的给定目录名,如何获取其所属的树对象的哈希以便为其附加注释?
从阅读这个答案我知道我可以使用
git cat-file -p master^{tree}
Run Code Online (Sandbox Code Playgroud)
列出根树的内容,但我仍然需要grep目录名的输出,并递归地遵循嵌套的树对象来获取树对象的层次结构中较深层目录的哈希值.
基本上,我正在寻找虚构get-tree-hash.sh
脚本的实现.如果被称为
get-tree-hash.sh path/to/directory/in/my/git/repo
Run Code Online (Sandbox Code Playgroud)
它应该输出
The hash for the "repo" tree inside "path/to/directory/in/my/git" is:
92a68a2f5560fa7080393b633e2afd1d5271deef
Run Code Online (Sandbox Code Playgroud) 我从SVN迁移到git,我在每个git提交中都有一个注释,引用了SVN版本号.在repo import之后我使用BFG repo清理器从二进制文件和其他垃圾中清除git历史记录.不幸的是现在我输入时没有注意到git log
.我想BFG忘记更新笔记提交的引用.BFG以下列格式留下*.txt报告,将旧对象id映射到新对象id:
0001b24011381e8885683cd1119ba4cb077fa64b c81149b1b52b9e1e1767d6141f292891d715edb5
00024eecdc31f2f6e67018f7d6f00e7c1ad03f1f 326ee3b508e3dd2934ec1f50069195f86ea1a1c7
00028e04dcc2d59bd835b447bd3a207ae481696c 3d18e9b9d3336e59d62093200b81603ffefcc747
Run Code Online (Sandbox Code Playgroud)
在给出上述映射的情况下,您能否建议一些脚本快速修复注释?
PS:我几乎可以肯定问题是由于没有更新refs引起的,因为当我输入git notes
第二名时,我可以看到在BFG报告中被认为是旧的引用object-id-map.old-new.txt
我读过这个和这个,但仍然认为他们是晦涩难懂.到目前为止了解:
git notes add -m "a note"
)问题:
push
(例子)如何可能为他们?它下面的机制是什么?如果不是提交,概念上添加什么?push
在Github UI上的'ed笔记?git log
?谢谢
目前,如果我在git中向对象添加注释,我必须明确地将此信息推送/拉到远程服务器.
是否可以配置git,这样当我执行git push
它时,它会推送我的本地笔记更改以及任何本地源更改?
同样对于git pull.
我们想用 来注释我们的提交git notes add
,这效果很好。要获取带有注释的所有提交的列表,我们使用此命令
git notes | cut -d' ' -f2 | xargs -ihash git log hash -1
Run Code Online (Sandbox Code Playgroud)
现在我们只寻找一个分支的注释。我在这里不知所措,因为笔记对分支一无所知。可能有一种方法可以开始git log
询问git notes
是否有提交注释。但我不确定这对于大型存储库来说是否会变慢。
有任何想法吗?
我正在使用 Git 存储库并希望定义自定义属性以应用于存储库中的每个文件。然后可以在每次提交时更新这些属性。理想情况下,属性应该易于搜索并最终导出。
在 Git 中有一种简单的方法可以做到这一点吗?我已经查看了 Git 笔记,但据我所知,这是每个提交而不是每个文件。
谢谢。
我在我的存储库中使用 git Notes。有时我需要找到包含给定字符串的注释的提交。到目前为止我正在使用这个命令:
git log --show-notes=* --grep="PATTERN" --format=format:%H
Run Code Online (Sandbox Code Playgroud)
这里的问题是,这会打印带有 PATTERN 的每个提交 SHA,即使它不在注释中,仅在提交消息中。有更好的方法吗?
在我之前的开发人员生活中,clearcase是10年以上用于版本控制的工具.现在,我工作的组织已经转移到git 4年了.在clearcase中,有易于访问的元数据结构,例如所有级别的项目上的属性,例如存储库或分支OR标签.git笔记存在,但经过一些网上冲浪,我没有遇到任何明确的有效方法,以及为什么这样做.例如,UCM ClearCase基线升级级别是一个很好的概念,我希望在git中这么简单.
我代表这个特定问题的开发社区统计数据:<100个开发人员,<5个主要发布分支,<100个客户补丁分支,代码库大小:<1000000行代码.
因此需要一些适当的元数据策略和工具.
在clearcase中,存在以下元数据结构:
属性,可以应用于标签或分支:
UCM基线是一种带有状态属性的标签形式(例如:参见https://www-304.ibm.com/support/docview.wss?uid=swg21135893)
特别是:
Git 注释是向 Git 对象添加元信息的功能。请参阅这篇Stackoverflow 文章了解更多详细信息。与提交类似,我也想签署注释。
我的本地 Git 配置为对所有提交进行签名。虽然签署 Git 提交按预期工作,但 Git 注释仍然未签名。在我的本地 Git 配置中,我有以下内容:
# excerpt from ~/.gitconfig
[commit]
gpgsign = true
Run Code Online (Sandbox Code Playgroud)
为了签署笔记,我尝试了以下方法。
# excerpt from ~/.gitconfig
[commit]
gpgsign = true
Run Code Online (Sandbox Code Playgroud)
我怎样才能使 Git 注释也被签名?