我添加了一个名为"file1.txt"
git repo 的文件.从那以后,我犯了,增加了几个目录,名称dir1
和dir2
,并承诺他们混帐回购协议.
现在当前的回购有"file1.txt"
,dir1
和dir2
.
我怎样才能删除"file1.txt"
,而不会影响其他人一样dir1
和dir2
?
我"意外地"向GitHub推送了一个提交.
是否可以删除此提交?
我想恢复我提交之前的GitHub存储库.
偶尔我会把一个DVD-rip放到一个网站项目中,然后不小心git commit -a -m ...
,然后,zap,回购邮件被2.2演出臃肿.下次我做了一些编辑,删除了视频文件,并提交了所有内容,但是历史记录中的压缩文件仍然存储在存储库中.
我知道我可以从那些提交开始分支并将一个分支重新绑定到另一个分支.但是我应该怎么做才能将2个提交合并在一起,以便大文件没有在历史记录中显示并在垃圾收集过程中被清除?
在Git代码库中,我想列出包含特定单词的所有提交.我试过这个
git log -p | grep --context=4 "word"
Run Code Online (Sandbox Code Playgroud)
但它并不一定会给我回文件名(除非它比我搜索的单词少了5行.我也尝试过
git grep "word"
Run Code Online (Sandbox Code Playgroud)
但它只给我现在的文件,而不是历史.
如何搜索整个历史记录以便我可以跟踪特定单词的更改?我的意思是在我的代码库中搜索单词的出现以跟踪更改(在文件历史记录中搜索).
我意外地将一个不需要的文件(filename.orig
在解析合并时)提交到我的存储库几个提交之前,直到现在我才注意到它.我想从存储库历史记录中完全删除该文件.
是否可以重写更改历史记录,以便filename.orig
从未首先添加到存储库中?
我正在使用我的GitHub帐户上的存储库,这是我偶然发现的一个问题.
node_modules
文件夹中在那个例子中,总git repo的大小约为6MB,其中实际代码(除了该文件夹之外的所有代码)只有大约300 KB.
现在我正在寻找的是从git的历史中删除该包文件夹的细节的一种方法,所以如果有人克隆它,他们不必下载6mb的历史记录,他们将获得唯一的实际文件截至上次提交时将为300KB.
我查找了可能的解决方案并尝试了这两种方法
Gist似乎在运行脚本之后起作用,它表明它摆脱了该文件夹,之后它显示了50个不同的提交被修改.但它没有让我推动那些代码.当我试图推它时,它说,Branch up to date
但显示50个提交被修改了一个git status
.其他两种方法也没有帮助.
现在即使它显示它摆脱了该文件夹的历史记录,当我在我的localhost上检查该repo的大小时,它仍然是大约6MB.(我也删除了refs/original
文件夹,但没有看到repo大小的变化).
我要澄清的是,如果有一种方法可以摆脱提交历史(这是我认为发生的唯一事情),而且那些文件git保持假设一个人想要回滚.
让我们说一个解决方案是为此而呈现并应用于我的localhost但不能复制到该GitHub仓库,是否有可能克隆该repo,回滚到第一个提交执行技巧并推送它(或者这是否意味着git将仍然有所有这些提交的历史? - 又名.6MB).
我的最终目标是基本上找到从git中删除文件夹内容的最佳方法,这样用户就不必下载6MB的东西,仍然可能有其他提交从未触及过模块文件夹(那很漂亮)他们中的所有人都在git的历史中.
我怎样才能做到这一点?
一些如何在合并期间在我的git存储库中检查.orig文件,这些文件现在显示在已修改和未跟踪的扇区中.但我不想在我的存储库中存在这个文件.怎么做.
modified: Gemfile.lock.orig
# modified: Gemfile.orig
# modified: app/assets/images/bg_required.png.orig
# modified: app/assets/javascripts/application.js.orig
etc...
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我不小心添加了一个图像文件夹并提交.然后,我又做了一次提交.然后我git rm -f ./images
再次使用并提交了这些文件.
现在,我在那个分支(master)中做了很多提交.在我的HEAD中,我没有该./static/images
文件夹.
因此,我的回购规模增加了很多.如何完全删除这些斑点?我想从我的远程GitHub仓库中删除它.
(解决了,看到问题正文的底部)现在
寻找这个,我现在拥有的是:
几乎相同的方法,但它们都将对象留在包文件中......坚持.
我尝试了什么:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_name'
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
Run Code Online (Sandbox Code Playgroud)
包中还有文件,这就是我所知道的:
git verify-pack -v .git/objects/pack/pack-3f8c0...bb.idx | sort -k 3 -n | tail -3
Run Code Online (Sandbox Code Playgroud)
还有这个:
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch file_name" HEAD
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
Run Code Online (Sandbox Code Playgroud)
相同...
尝试过的git clone
技巧,它删除了一些文件(约3000个)但最大的文件仍然存在...
我在存储库中有一些大的遗留文件,大约200M,我真的不希望它们在那里...而且我不想将存储库重置为0 :(
解决方案:这是摆脱文件的最短路径:
refs/remotes/origin/master
一个远程存储库的行,删除它,否则git将不会删除这些文件git verify-pack -v .git/objects/pack/#{pack-name}.idx | sort …
我将我的数据库备份到GIT,这样我就可以在家用计算机上获取数据库了.
我不希望这个文件被版本化,它只是一次性的事情.
我可以将其删除,因此GIT无法跟踪它的进展或历史吗?
git ×10
git-rm ×3
git-rebase ×2
github ×2
git-commit ×1
git-remote ×1
grep ×1
rebase ×1
search ×1