Cyr*_* N. 33 git revision gist github
我在GitHub上创建了一个Gist,我看到了我不希望任何人看到的信息.我从那时起更新了文件,但每个人仍然可以访问该文件的旧版本.
除了删除Gist之外,有没有办法明确删除该特定修订版?
我看到我不是唯一一个有这种问题的人(Git:删除一个远程修订版),但我没有设法删除修订版.此处指示的过程似乎有助于删除一些文件.我想删除整个修订版.
Til*_*gel 35
Github有一个关于删除敏感数据的帮助页面:
http://help.github.com/removing-sensitive-data/
由于gists只是git存储库,你应该能够在本地克隆你的要点,在那里进行清理并强制推送用清理后的repo覆盖github版本.
是的,在考虑之后:如果<commit>
是要删除的提交,请执行
git rebase -i <commit>^
Run Code Online (Sandbox Code Playgroud)
将该行标记为<commit>
as edit
,save和quit.
你打算后,git会将工作目录设置为州<commit>
.修复文件,使用git add
并git commit --amend
修复提交.然后呢git rebase --continue
.如果唯一的事情,即下一次提交,是删除敏感数据,它可能会自动删除,因为它在现在修改的提交后不包含任何更改.
然后,执行a git push -f
强制更新(因为它现在是非快进的,这意味着它更改已发布的git历史记录).
mee*_*ern 24
接受的答案是好的,但有点难以遵循.这是相同的答案,但有点甜.
正如Tilman Vogel所说,要点只是存储库,所以这种方法适用于github存储库和gists.
我们假设只有一个版本包含您不想显示的密码.您已经检查了新版本并删除了密码,并希望摆脱以前的版本.如果有许多提交显示密码,您应该能够调整此过程.
首先,修复必须在您的本地计算机上完成(而不是在github中).要做到这一点,首先要在本地克隆要点.github上的gist页面应该向您展示如果单击私有克隆URL,如何创建私有克隆.就像是:
git clone git@gist.github.com:421xxx1.git gist-421xxx1
Run Code Online (Sandbox Code Playgroud)
这为您提供了一个需要重新定义的本地副本(意味着需要使用版本).
cd gist-421xxx1
git rebase -i eexxaa^
Run Code Online (Sandbox Code Playgroud)
其中eeccaa是包含密码的(第一个)版本.您可以从gist页面修订列中获取此编号.^是必需的.该命令意味着'让我以交互方式将eexxaa中的遗嘱更改为最新的.该命令打开一个编辑器,其中包含repo中每个版本的每行上的命令.默认命令是'pick',意思是'使用或保留此版本'.
编辑器中的第一行看起来应该是这样的
pick eexxaa <- the version with the password
pick ffxxbb <- the first version without the password
Run Code Online (Sandbox Code Playgroud)
将此更改为
pick eexxaa
squash ffxxbb
Run Code Online (Sandbox Code Playgroud)
即在没有密码的版本上将'pick'更改为'squash'.这将要求rebase将新的(无密码)版本压缩到旧的(密码携带)版本,基本上删除版本eexxaa.显然你的版本将不是eexxaa或ffxxbb,不会在任何地方使用eexxaa或ffxxbb!
正如@kand所说,你应该squash
每个包含密码的版本.
在编辑器中保存并退出(如果它是vi:x).rebase现在应该打开一个新的编辑器,显示两个版本的提交消息,并要求一个组合的提交消息.对于一个要点,这些消息很可能是空的,但你确实需要在这里放一些东西或者rebase会中止.键入消息,保存并退出,然后完成rebase.
您现在拥有一个没有包含密码的版本的存储库.为了让这回到主旨:
git push -f
Run Code Online (Sandbox Code Playgroud)
这将强制更改到github仓库.点击刷新,您应该能够在浏览器中检查违规版本是否已从右侧的修订列中删除.
而已!
如果您不关心显示要点上的任何修订,您可以执行以下操作来消除所有历史记录并仅显示一个修订。
git clone some-gist-repo
cd some-gist-repo
git rebase -i --root $tip
Run Code Online (Sandbox Code Playgroud)
您将能够在编辑器中看到该要点的所有提交。只需选择第一个并将其他所有内容替换为s
或squash
。完成后,保存并添加提交消息,然后像这样强制推送到 master,就可以了。
git push -f origin master
Run Code Online (Sandbox Code Playgroud)
唯一可见的修订是添加文件,仅此而已。
归档时间: |
|
查看次数: |
14221 次 |
最近记录: |