为了从 GitHub 存储库中删除提交,典型的建议是在本地删除提交(例如,通过git rebase -i)并将修改后的分支强制推送到原始远程分支上。
但是,如果有问题的远程分支是拉取请求的一部分,GitHub 现在会很有帮助地显示消息
<user>将<remote_branch>分支从<old-commit>到<new-commit>
和显示的链接以查看之间的差异<old-commit>和<new-commit>。(这似乎是最近的变化,我不记得以前遇到过这个消息。)
根据这里的另一个答案,GitHub 应该定期删除不再被引用的提交。但是因为他们确实在他们的 UI 中引用了旧的提交,我怀疑他们会保留它。(我已经很长时间没有看到这个明显的新功能了,也没有发现任何官方提到它。)
是否可以以防止其他用户看到该提交的方式删除远程提交?或者至少可以从 PR 讨论页面中删除上面的消息?有没有其他方法可以更改 PR 底层分支的内容,而每个人都无法从 PR 页面访问旧提交(至少除非他们知道提交哈希)?
(这个问题与删除密码等敏感信息无关 - 我知道无论之后是否有可能删除提交,这些都应该被视为受到损害。)
我不小心在git仓库中跟踪了工作区配置文件.试图解决问题,我将git rm --cached这些文件添加到.gitignore文件中.
现在,每当我从回购中签出一个分支时,这些都会被删除.有什么方法可以避免这种情况吗?
在GitHub上,我将一个存储库分叉并克隆在我的电脑上.然后,出于测试目的,我编辑了一个文件,提交了一个提交并将其推送到GitHub.但现在我想完全删除此提交.
我做了以下事情:
git reset --hard <sha1_of_previous_commit>
git push --force
Run Code Online (Sandbox Code Playgroud)
它看起来没问题,但我的提交仍然可以通过我的提交的SHA1通过URL在GitHub上访问.所以我删除了GitHub上的存储库,然后URL说不找到.
但是,如果我再次使用相同的存储库,则可以通过此URL再次访问我的提交.请帮助我,我怎么能摆脱这个提交?
2个星期前,我提交了我的应用程序的配置,它有我的密码,它不是很有用.如何从提交历史记录中删除该文件并确保它不会重新提交?
我想从所有提交树中删除该文件,因为它包含我的密码.
我正在使用公共 GitHub 存储库来协作完成一个项目。因为我是个白痴,所以我用一些我无法分享的敏感信息创建了一个问题。
因为我需要整体问题信息,并且敏感信息可以被撤回而不会产生任何有意义的影响,有没有办法将其从问题中删除而无需删除它?
我有一个曾经包含敏感配置信息的文件.我将配置信息移到另一个不受版本控制的文件中.我想将其他文件保留在版本控制之下,但我想删除它的历史记录,因为可以轻松浏览github上的源代码并在之前的提交中查找敏感信息.最好的方法是什么?我只是看到如何从版本控制中删除文件本身并清除其历史记录.
对git来说有点新鲜,所以请原谅新手.
请考虑以下问题:
我想做的事:
将所有提交从root用户提交到具有干净状态的任意提交到一个大的"初始提交".
当我做:
git rebase -i --root
Run Code Online (Sandbox Code Playgroud)
并将第一次提交压缩在一起:
pick Initial commit \
fixup dirty1 |
fixup dirty2 | Squash these to one, to remove credentials.
fixup dirty3 |
fixup clean1 /
pick clean2
pick clean3
...
...
Run Code Online (Sandbox Code Playgroud)
我必须重新设置所有内容并在此之后再次解决所有合并冲突.
我怎样才能压缩前N个提交而不必解析整个历史记录,包括N + 1提交后的合并冲突.
我已经开始将我的私有subversion项目转换为git(Github)并将代码发布给公众.因此,我是一个git新手.
不幸的是,有一个包含机密数据的项目的修订版.修订版没有标记,我只知道它的哈希值.
有没有办法从远程git存储库中完全删除该特定修订?这是一个独立项目,所以没有人会受到伤害.
我最近注意到我在git中的版本控制下有一个包含敏感信息的文件。现在,我已将此文件添加到.gitignore列表中,但是如何在不触摸其他内容的情况下从提交历史记录中删除所有提及的文件?即,我不想只删除我的.git目录。
我有一个 git repo,它有一个源文件,其中包含一些我希望删除的敏感内容(我不想删除该文件,只需修改其内容)。提交是在项目开发的早期(当时我们只有一个分支),但现在在其他 n 个分支中找到了它自己。
是否有任何 git-fu 我可以运行以在所有分支中清理它?交互式 rebase 一次只能对一个 Head 起作用。
我确实在 github 上找到了这个命令:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch DotNet/src/ExternalLibs/GemBox/' \
--prune-empty --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)
但它只适用于删除,而不是修改。
A-B-C-**STUPID**-D-E-F
\
\-G-H-I
\-J-K
Run Code Online (Sandbox Code Playgroud) git rebase git-rebase git-rewrite-history git-branch-sculpting