问题标签 [git-history-rewrite]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
898 浏览

git - 如何从 BitBucket git 存储库历史记录中删除带有密码的提交?

前段时间我不小心向 BitBucket git 存储库提交了密码,在当前 master 后面有几个提交。虽然我后来通过不使用它提交来删除密码,但它仍然存在于过去的几次提交中。

我不介意在这些提交期间丢失更改的历史记录。我也不担心有人在提交密码时看到了密码,但我想删除此历史记录以避免将来出现问题。

采取什么步骤来确保在这些步骤之后,以后访问此 BitBucket 存储库的任何人都无法找到此密码?

假设我的提交(从最旧到最新)带有(假)SHA1:c001 c002 c003 c004

c002 和 c003 是我想完全删除的“坏”提交的哈希值。我希望 master 留在 c004 上,但是如果我让他们访问这个 repo,任何人都无法再访问 c002 和 c003。我尝试按照关于提供重置或变基的类似问题的说明进行操作,但无法使它们正常工作;我要么设法删除我机器上的提交,但无法推回 BitBucket,或者在搞砸后无法完全删除我的机器。

有人可以解释一下所需的步骤: 1. 从存储库的历史记录中删除 c002 和 c003 2. 确保它保存在 BitBucket 上,并且人们既不能在 BitBucket 的 GUI 中查看这些提交,也不能通过将存储库克隆到他们的机器来查看这些提交

我会很感激能解释命令的作用的答案,而不仅仅是编写一些对我有用或对我不起作用的神奇 git 命令。此外,这个问题是专门针对 BitBucket 的,以防某些事情可能是特定的......我在尝试将更改推送回 BitBucket 后,在进行本地回购后遇到了“更新被拒绝,因为您当前分支的尖端落后”的问题用 reset --hard 改变。在几次失败的尝试和对 git 文档的挫败之后,我决定问 SO。

.

0 投票
1 回答
24 浏览

git - 从一个存储库中获取历史更改作者信息并推送到另一个存储库

我们有两个存储库,1. 源存储库 2. 目标存储库 当源存储库中出现提交时,我需要更改作者姓名和作者电子邮件,然后推送到目标存储库。

我已经尝试了这个链接的解决方案, 但它似乎改变了所有的提交。我只需要更改最新的。

在目标存储库中,我需要更改作者姓名和电子邮件的提交。在特定的提交引用之后。

0 投票
1 回答
33 浏览

git - 通过合并修改历史中的提交而不将其展平

可以说我有类似的历史。
Develop 会定期合并到 master 中。

如何在不完全展平历史的情况下修改 b?
如果我以交互方式变基并修改 b,我最终会得到如下所示的历史记录:

(大写表示提交更改)

我怎样才能保留历史结构,让它看起来像这样:

0 投票
1 回答
1176 浏览

git - 如何检查 git rebase 发生了什么变化?

有没有办法检查git rebase在执行 rebase 并退出 rebase 模式后发生了什么变化?

我使用 rebase 来更改以前提交的作者姓名。

在尝试这样做时,我在错误的分支(即,master)中重新设置了基准,该分支在重新设置文件中向我查看了一些不是我的目标的提交。因此,我只是退出了编辑器,它说“变基成功完成”。

最后,我切换到我的本地分支(即,vIO),我可以更改作者姓名,但我想检查我的其他变基试验是否影响历史。顺便说一句,我的本地分支 ( vIO) 尚未推送到远程。

我尝试通过以下方式将本地主机与远程主机进行比较:

git diff origin/master...master

这并没有带来任何东西。这是否意味着主分支肯定不受变基的影响?

0 投票
0 回答
145 浏览

git - BFG Repo Cleaner 无法清除远程中的 git 历史记录

我试图从 git 历史记录中删除一个文件。我能够从本地删除该文件并为所有分支进行了强制推送

我的 cli 是:

在这些处决之后,我确实强制推动所有分支Git push --force

当我尝试git checkout commitId(which include deleted file changes) 它给出“致命:参考不是一棵树:commitId ”意味着提交ID不存在于本地。

通过https://github.com/project/repo/commit/commitId两天后(git carbage 收集时间)我可以在 GitHub 事件中看到该提交 ID

意味着,该 commitId 不会在远程更新/删除。我甚至需要从远程删除这个提交。我们怎么做?

0 投票
1 回答
50 浏览

git - Git历史重复,是否可以压缩提交?

帮助:Git 历史重复 (O_O)

我试图获取包含 API 密钥的文件,因此研究了从 git 历史记录中删除文件并使用此处提供的命令:https ://youtu.be/Bo-8EfDpKxA

我使用了命令

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .env.development' HEAD git filter-branch --index-filter 'git rm --cached --ignore-unmatch .env.production' HEAD

效果很好,但我认为在将更改的历史记录拉入第二个本地存储库以测试更改时我搞砸了。我将不得不在第二个 repo 上重新定位,以确保旧的历史已经消失。但我想我已经拒绝了(快进合并或其他什么),所以现在我有大量重复的提交!(O_O) 它们是相同的代码更改和时间戳,但提交 ID 不同。

问题

有没有办法修复历史的重复?历史重写会压缩每个具有相同时间戳的提交,怎么样?

或者我会手动删除(几乎)每第二次提交的 rebase?

第二个问题

我在开发分支上进行了这些更改,并且文件的删除确实有效。然而,将开发合并到主人并没有成功(当然)。所以我想我也写过大师的历史吧?

但现在恐怕我会再次复制主分支历史中的提交......

0 投票
1 回答
195 浏览

git - BFG repo 清洁器不清理远程存储库

您好,我在 azure devops 上有一个非常大的 13.2 GB git 存储库。我想重写这个 git 存储库的历史。减少存储库大小。我使用了 bfg repo 清洁器。我遵循此链接中的所有步骤:[在此处输入链接描述][1]。我的本地存储库上的 git 存储库大小减少到 1,86 GB。但是当我克隆远程存储库时,它仍然是 13.2 GB 大。虽然我能够成功推送 git。

我遵循的步骤:

  1. java -jar bfg.jar --strip-blob-big-than 100M some-big-repo.git

  2. $ cd some-big-repo.git $ git reflog expire --expire=now --all && git gc --prune=now --aggressive

  3. git push --force

谁能告诉我我做错了什么?

0 投票
1 回答
169 浏览

git - 移动 Git 子模块时,如何使用子模块的新 URL 更新父存储库中的完整历史记录?

谁能帮帮我。我想将一些 Git 存储库从一台服务器移动到另一台服务器,并同时重命名它们。我遇到的问题是当某些存储库是其他存储库的子模块时。我想在顶级模块中所有分支的历史记录中替换子模块的 URL,以便在删除原始文件后,我仍然可以返回并重建旧提交。我在 Windows PC 上,目前,我正在使用 .bat 文件来运行我的存储库迁移。

要将子模块从 server1 移动到 server2 并将名称从 sub_old 更改为 sub_new,我将原始(裸机)克隆到 C: 驱动器上的文件夹中,更改 URL,然后向上推送到新服务器:

然后从 server1 中删除 sub_old。

现在,当我想将使用 sub_old 存储库作为子模块的顶级存储库移动到新服务器时:

然后从 server1 中删除 top_old。

在我想更改对子模块的所有 URL 引用时,我尝试使用:

但没有成功。我显然不明白这应该如何工作,或者它是否适合使用。

0 投票
1 回答
199 浏览

c# - 无论分支如何,如何使用 libgit2sharp 获取所有 git 提交?

AFAIK,Repository.Commits属性返回可从当前分支访问的所有提交。

无论分支如何,我都想获得所有可能的提交。我正在使用以下命令:

它很慢,但似乎有效(也许我错过了一些未涵盖的特殊情况)。这是正确的做法吗?有没有更有效、更快的方法?

0 投票
1 回答
39 浏览

git - 将 git 历史记录折叠到标签(在标签之间合并提交)

我们有一个相当大的(1000 多个提交)存储库,其中包含 7 年的更改和 6 个发布版本(每个版本由一个 git 标签表示)。我们想折叠历史,以便在最后一个标签之前,两个标签之间的所有提交都折叠成一个提交,带有版本标签。从而将我们的存储库历史记录减少到大约 15 次提交。我们不会跨版本进行任何还原。作为奖励,理想情况下,我们希望将所有提交我们崩溃的人保留为co-authored-by. 如果它很重要,我们没有任何从标签之前跳过标签进入新版本的合并。

从:

进入

关于如何进行的任何想法?