在另一个问题上使用Chris的答案,我可以将快照历史记录添加到我的git存储库中.由于其中一个文件不是我的历史记录的一部分,而只是在快照中,因此第一个原始提交现在也包含此文件的删除.我该怎么撤消?
起初我认为这与我如何从git的历史记录中删除敏感文件相反,但实际上我不想将文件插入历史记录,只是从历史记录中删除删除.
当我开始我的git repo时,我提交了一些文件作为初始提交.现在,很多提交后来,我注意到我在这些文件中包含了一条信息,其中包含我不想发布的信息(与其他代码不同).所以我想删除/更改这一行并保留其余的代码.
在我周围搜索我找到了这个解决方案:插入一个空提交作为初始提交(这里描述:在Git中根提交之前插入一个提交?),对它做一个rebase,然后通过修改编辑旧的第一次提交.不幸的是,在rebase期间出现了许多残酷的合并冲突(如下所述:git:解决由rebase引起的冲突).
有没有不同的方法来解决我的问题,或者必须手动变基和编辑所有冲突?
提前致谢 :)
我一直使用基于接口的git客户端(smartGit),因此对git控制台没有多少经验.
但是,我现在需要在历史记录中替换所有.txt文件中的字符串(因此,不要删除整个文件而只是替换字符串).我找到了以下命令:
git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#(PASSWORD1|PASSWORD2|PASSWORD3)#xXxXxXxXxXx#g"' -- --all
Run Code Online (Sandbox Code Playgroud)
我试过这个,不幸的是注意到密码确实发生了变化,所有二进制文件都被破坏了.图像等都会被破坏.
有没有更好的方法来做到这一点,不会破坏我的二进制文件?
谢谢.
编辑:
我搞砸了什么.导致二进制文件损坏的实际代码是:
$ git filter-branch --tree-filter "find . -type f -exec sed -i -e 's/originalpassword/newpassword/g' {} \;"
Run Code Online (Sandbox Code Playgroud)
顶部的代码实际上使用我的密码奇怪地删除了所有文件.
git version-control substitution git-filter-branch git-rewrite-history
我错误地将包含密码的文件推送到我的仓库 - 仅供参考,回购只是一个小型的个人项目.
一旦我意识到密码存在,我就将文件添加到.gitignore并执行git rm -r --cached <filename>,提交并推送到回购.
我现在意识到密码仍然存在于历史记录中 - 删除它的最佳方法是什么?
我在Github上阅读了删除敏感数据页面,建议更改密码 - 我已经完成了 - 但我也想删除历史记录.
我想将一些代码推送到我的GitHub存储库.这些代码是在像不同的语言Javascript,Java,Python等某些代码包含了一些私人API,我不想公布关键.
有没有办法自动隐藏它?我应该手动将其从我的代码中删除吗?
我想推动很多项目.因此,手动删除不是一个好选择.
我按照Github上的说明(https://help.github.com/articles/remove-sensitive-data/)来整理一个混乱的存储库.我已成功清除所有.csv文件
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch *.csv' \
--prune-empty --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)
现在需要删除所有.docx文件.但是,当我使用与*.docx完全相同的命令时,我收到一条错误消息:
fatal: bad revision ' --prune-empty'
我在github上推送到了原点,并在进行第二次更新之前克隆了一份新的副本.我不确定我做错了什么/不同导致这个错误.任何帮助非常感谢:)
我收到了一些源代码并决定使用git,因为我的同事使用了mkdir $VERSION等方法.虽然代码的过去目前似乎并不重要,但我仍然希望将其置于git控制之下以更好地理解开发过程.所以:
将这些过去的版本放入我现有的git仓库的简便方法是什么?目前没有远程仓库,所以我不介意重写历史记录,但考虑到远程存储库的解决方案当然是首选,除非它更复杂.基于目录或基于档案文件的历史记录,不需要任何更多交互的脚本的加分点.
昨天,我在GitHub上推送了ConnectBot的分支.我推了一次,意识到我没有按照我想要的方式进行更改,重新提交并再次推送.
现在,GitHub都提交了两个提交:
我的主分支只跟踪第二次提交,但第一次提交仍然可用,仍然在我的活动源中.如何删除它以确保没有人意外地提取该提交而不是更正的版本?
我做了一件非常愚蠢的事.我在代码中输入了一个curseword,然后将代码推送到master分支上.之后我又推了几次,所以人们不会把坏东西拉出来,但我仍然可以在提交历史中找到这个诅咒词.
有没有办法从历史记录中删除提交?编辑:我不想将文件添加到gitignore,因为我们需要该文件.
谢谢
在提交时,我不小心包含了密码.如何从存储库中删除此提交?
推送到了github,所以提交从历史中完全删除是很重要的.
git ×10
github ×4
api-key ×1
commit ×1
git-amend ×1
git-commit ×1
git-dangling ×1
history ×1
repository ×1
substitution ×1
undelete ×1