- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有什么方法可以将远程分支指针重置为您知道在远程 reflog 中但在本地存储库中没有的 SHA?
我非常熟悉重置(软/混合/硬)如何在本地存储库上工作,但这对我没有帮助。
这是我要解决的情况。我有一段时间没有进行提取,并且远程主机已经更新了我在本地还没有的 merge 。
我搞砸了,做了一个 git push --force
意思是只更新远程功能分支,但忘记了一个参数,最终强制功能分支和主控到我在本地的修订。
这意味着 master 现在缺少自从我上次获取以来发生的 merge 提交。我们正在使用 github,所以我收到一封电子邮件,告诉我 master 以前所在的 SHA。我还能够转到 url 并看到提交仍然存在(尚未收集垃圾)。
我能够通过重做我丢失的 merge 并再次推出它来“修复”它(最终更改了 SHA,因为它是不同的提交者和时间)。这不是最优的,如果我在 master 上丢失了不止一个 merge 提交,情况可能会更糟。
我想做的只是 reset --hard
远程 master 分支到它应该位于的 SHA。如果没有 SSH 访问存储库,有什么办法可以做到这一点吗?
这是在 github 上,所以我无法直接访问 repo,无法在那里进行 ssh 并直接重置它。
最佳答案
我不认为你可以在不询问 GitHub 的情况下直接访问/重置任何东西。
即没有 contacting GitHub support让他们查看您的 GitHub 存储库的 reflog。
他们将能够通过创建新分支或将其重置为现有分支来使丢失的 SHA1 可见。
实际上,repo 所有者可以查询 GitHub Event API。
参见“Does github remember commit IDs?”。
OP Ted Naleid确认,提到 this thread (和 this one )作为一个原因:
This is by design.
That is, when you accidentally push secret data, you can rewind your refs on the server.
Even though the objects still live on the server (until they are garbage-collected) nobody will be able to fetch your secret stuff even if they happen to know the SHA1.
Dan Moulding在他的 own answer 的评论中确认了以下内容:
I've done more testing and found that the clone behavior differs depending on the protocol used.
Cloning via SSH (and presumably the via the git protocol) behaves as you've described; i.e. unreachable commits are not transferred to the clone.
Now I've tested it with HTTPS also (using GitHub itself). And it doesn't look good; the clone does not get unreachable objects.Cloning locally, however, all commits -- unreachable or not -- are transferred.
(但是 OP 澄清说,这只是因为对于本地克隆,默认情况下 .git/objects/
目录下的文件是硬链接(hard link)的,以尽可能节省空间.git clone --no-hardlinks file:///Users/yourUser/your/full/repo/path repo-clone-name
不会传输无法访问的提交)
关于git - 重置 --hard git 远程分支到远程 reflog 中的 SHA 但不在本地 repo 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497405/
安全服务 API 似乎不允许我直接计算哈希。有很多公共(public)领域和自由许可的版本可用,但如果可能的话,我宁愿使用系统库实现。 可以通过 NSData 或普通指针访问数据。 哈希的加密强度对我
我有一堆大对象,以及它们的结构和它们的向量。有时检查复合对象的完整性很重要;为此,我正在使用对象的 Sha256“签名”。 至少有两种方法可以定义复合对象的签名:通过计算组件串联的sha,或者通过计算
研究了一个 cpu 矿工的源代码,我发现了这段代码: work->data[20] = 0x80000000; 好吧,我问了编码,他的回答是: “这些值是标准 SHA-2 填充的一部分” 谷歌搜索“s
您是否需要许可证才能将 SHA-1 或 SHA-2 用于商业目的? 最佳答案 它最初由 NSA 为安全 DSA 加密创建,然后被 NIST 采用以维护算法的所有方面以及 SHA(2 和 3)。 这是一
谁能解释一下 SHA-256 和 RIPEMD-160,哪种算法通常更快,性能和空间比较是什么(如果有)?我所说的空间比较并不是指 160 位和 256 位,而是指冲突频率、生产环境中空间要求的差异。
我对 SHA-2 和 SHA-256 之间的区别有点困惑,并且经常听到它们互换使用。我认为 SHA-2 是哈希算法的“家族”,而 SHA-256 是该家族中的特定算法。任何人都可以消除困惑。 最佳答案
我正在尝试从 SHA-1 更改为 SHA-512 以获得更好的安全性,但我不完全清楚如何进行更改。 这是我使用 SHA-1 的方法: public static String sha1Convert(
在我的 C# 应用程序中,我使用 RSA 对文件进行签名,然后再由上传者上传到我公司的数据库中,在这里我必须选择 SHA-1 或 SHA-2 来计算哈希值。与编程中的任何其他组件一样,我知道必须有一个
我正在研究 SHA1 、 SHA-256 、 SHA-512 在不同处理器上的速度(计算哈希的时间) 这些散列算法可以分解为跨多个核心/线程运行吗? 最佳答案 如果您想将计算单个哈希的执行并行化(无论
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
这个问题在这里已经有了答案: SHA2 password hashing in java (4 个答案) 关闭 9 年前。 我需要计算文件的 SHA-2 或 SHA-3。我没有提交任何代码示例来说明
在我的应用中,之前开发者已经使用openssl version 1.0.1e [#include openssl/sha.h]并且已经使用了函数 unsigned char *SHA(const un
我正在尝试实现 SHA-2加密而不是 SHA-1 . 为此,我知道这两种哈希算法之间的位数不同,这让我很困惑。 如何实现这一目标以及我需要在哪些部分进行必要的更改? 我可以使用来自 Java、Pyth
我目前正在使用 SHA-1。我像下面的代码一样使用它,但我想将它更改为 SHA-256。 public String sha1Encrypt(String str) { if(str == nul
我想将一些 Java 代码转换为 C#。 Java 代码: private static final byte[] SALT = "NJui8*&N823bVvy03^4N".getBytes()
我的程序使用 SHA-1 证书进行 SSL 连接。 SHA-2 证书现在已被一些网络服务(Gmail)广泛使用。这会导致在电子邮件通知设置期间阻止与 SMTP 服务器的传入连接。 为了发送电子邮件,我
我在提交中生成差异/更改,以便我可以将其上传到 ReviewBoard。 我使用了“git show d9f7121e8ebd4d1f789dab9f8214ada2h480b9cf”。它给了我 di
我刚刚从这个 HN-post 了解到 git 正在转向新的散列算法(从 SHA-1 到 SHA-256 ) 我想知道是什么让 SHA-256 最适合 git 的用例。 是否有任何/许多强有力的技术原因
是的,我需要降级到 SHA-1 以增加对项目中旧浏览器的兼容性。 有没有办法做到这一点? 我正在使用 Linux Centos 6.5 和 Apache/2.2.15。 我有 3 个文件: SSLCe
在 TLS1.1 和 TLS1.2 中,Cipher(rsa-with-aes-128-cbc-sha) 将使用哪个 Digest(SHA1 或 SHA256)? 最佳答案 根据官方openssl w
我是一名优秀的程序员,十分优秀!