- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经在一个库上工作了很长一段时间,并且在我的 private
存储库中有很多提交:
A -> B -> C -> D -> E
最后,我即将完成第一个版本,并希望将它发布到一个名为 public
的远程服务器,从 D
开始保持 A..C
我自己,所以 public
之后应该是这样的:
D -> E
根据需要,我希望能够证明我是如何得出 D
的(想想版权声明等)。因为(目前)几乎不可能用时间和变更集对链中提交的哈希进行逆向工程,我想只是保持 D
的父指针指向 C
将是 git 的天才优势之一。可悲的是,我找不到真正实现这项工作的方法。
那么,我怎样才能将 D -> E
推送到 public
使其成为一个功能齐全的公共(public)存储库,其中包含所有必要的对象以 check out D
或 E
和 D
仍然指向 C
作为父级?
git push public D..E:master
error: src refspec D..E does not match any.
error: failed to push some refs to '<public>'
据我所知,压缩 A..D
会引入一个新的提交,删除指向 C
的父指针,从而消除 A 存在的可证明性..C
。 (简单的例子:假设 C
反转了 B
,那么你永远无法证明 B
在某个时候在那里。)
我显然可以在 squash 提交的描述中手动记下 C
的哈希,但是已经有一个 parent
指针字段,为什么不使用它呢?
此外,为了对公众做出进一步的改变,我必须在这个新的压缩提交之上重新设置我的私有(private)分支,这似乎是错误的......
我想我找到了一个解决方案,首先创建一个具有所需深度的本地克隆 local_public
,然后将该克隆推送到 public
,如下所示:
git clone --depth 2 file:///<abspath_private> local_public
与
git log --pretty=raw
我可以验证 local_public
只包含 D -> E
并且提交、树和父哈希是相同的,这正是我想要的。
问题是,当我尝试从 local_public
推送到添加的 public
远程时,我收到如下错误:
! [remote rejected] master -> master (shallow update not allowed)
有什么想法可以实现吗?
最佳答案
你想要的不可能。
Git 中的提交就像链表一样工作。每个提交都有父提交的 ID(如果是根提交,则为 null)...父提交的 ID 是提交标识的一部分。
要将 D -> E 推送到存储库,您需要修改 D 的父级,这将导致 D 的哈希值发生变化,这反过来又需要 E 的哈希值也发生变化(因为 E将有一个新的 parent )。
关于git:从某个提交开始发布,将早期历史保密,但可证明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34108912/
我正在为从 API 级别 8 到 14 的 android 开发一个应用程序。我正在尝试在早期版本中获得与 android 4(请参阅联系人应用程序)相同的快速滚动行为(右侧固定的时尚滚动条)边)。有
早期(编译期)优化 jvm的编译器可以分为三个编译器: 前端编译器:把*.java转变为*.class的过程。如sun的javac、eclipse jdt中的增量式编译器(ecj)
苹果终于推出了所谓的auto-renewable subscriptions昨天。由于我在应用内购买方面的经验很少(仅限沙盒),所以我不确定我在这里是否一切顺利。似乎需要对收据进行服务器端验证。找出订
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 要求代码的问题必须表明对正在解决的问题的最低理解。包括尝试的解决方案、它们为什么不起作用以及预期结果。另
在 Wagner 的“Effective C#”第 23 项中,他解释说 interface methods are not virtual...they are a declaration of a
我最近遵循了本指南 Installing a Git Server using Apache (WebDAV) on Ubuntu Server 12.04使用 Apache (WebDAV) 设置本
这是我之前的问题 jQuery UI hiding not taking effect for early DOM elements 的后续问题。我几乎刚刚编辑了那个,但不想使 the accepte
我正在尝试替换 ZonedDateTime.toInstant方法,因为它仅从 API 26 for Android 开始可用。 但我的应用程序应该支持 API 19。 我想将 ZonedDateTi
我的电脑正确配置了 SSH,我在尝试克隆存储库时遇到了这个错误: 我运行这个命令来克隆存储库 git clone ssh://git-codecommit.us-west-2.amazonaws.co
我是一名优秀的程序员,十分优秀!