目前,当我尝试推送到Git仓库时,我收到以下错误。
remote: error: GH001: Large files detected.
remote: error: Trace: 7bbfe5c1099cfe679aa3cd1eee13e10a
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File e3384023be667de7529538b11c12ec68.201307290946.sql.gz is 125.37 MB; this exceeds GitHub's file size limit of 100 MB
我已经完成并确保该文件在目录中不存在,并且已经完成了git add -u,我们已经尝试修剪分支但是这不起作用,因为它无法找到要删除的文件。
非常感谢任何帮助。
答案 0 :(得分:29)
您可能正在推送多个提交,其中一个提交包括一个大文件,另一个提交删除该文件。
在任何情况下,您都可以尝试(如“Fixing the “this exceeds GitHub’s file size limit of 100 MB” error”中所述,过滤分支(如果您知道您无法看到的大文件的名称/路径)
git filter-branch --index-filter 'git rm --cached --ignore-unmatch e3384023be667de7529538b11c12ec68.201307290946.sql.gz' <sha1>..HEAD
或者,如果您不知道但想要删除任何大文件(例如&gt; 90MB),您可以使用 BFG repo cleaner
bfg --strip-blobs-bigger-than 90M my-repo.git
这将在您的回购历史记录中跟踪您难以捉摸的大文件并将其删除
请注意,之后您必须执行git push --force
,因为最近提交的历史记录将被修改。
如果其他人之前已经克隆过你的回购,那么为了警告他们,需要进行一些沟通。
答案 1 :(得分:24)
在我的情况下,我用这个链接修复了它:
GitHub Help | Working with large files
注意它在哪里说 giant_file (我没注意到)
$ git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch giant_file' \
--prune-empty --tag-name-filter cat -- --all
$ git commit --amend -CHEAD
$ git push
答案 2 :(得分:4)
如果你有几个大文件,你需要运行另一个命令:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch largfile1'
git filter-branch --index-filter 'git rm --cached --ignore-unmatch largefile2'
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f
你需要运行
git update-ref -d refs/original/refs/heads/master
然后你可以运行git filter-branch命令
希望这有助于你
答案 3 :(得分:2)
使用filter-branch
删除文件
git filter-branch --tree-filter 'rm -rf your/file/path/task.txt' HEAD
确保您必须添加rm -rf
在此之后输入代码
git push origin master -f
答案 4 :(得分:0)
首先,需要解决未暂存的提交。使用public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Please enter a number between 5 and 10, inclusively: ");
int userInput = in.nextInt();
in.nextLine();
System.out.print("Please enter a string of length 6 characters: ");
String textToChange = in.nextLine();
int length = 6;
// Print error if text is not 6 characters long.
while (textToChange.length() != 6) {
System.out.println("Error! Enter a string of length 6.");
in.nextLine();
textToChange = in.nextLine();
}
//new array list for results of random text generated
ArrayList<String> randomTextArray = new ArrayList<>();
// If input is 6 characters, print out randomText X amount of times, depending on the user's specification of user.
if (textToChange.length() == 6) {
for (int i = 1; i <= userInput; i++) {
String randomText = "";
// Initialise array to create random order of chars.
Random rand = new Random();
char[] text = new char[length];
for (int a = 0; a < length; a++) {
text[a] = textToChange.charAt(rand.nextInt(textToChange.length()));
}
// Take the chars from array and concatenate them into a string of the same size as the text variable.
for (int a = 0; a < text.length; a++) {
randomText += text[a];
}
randomTextArray.add(randomText);
System.out.printf(randomText + "\n");
}
System.out.printf("Odd Characters \n");
String oddCharsOfRandomText = "";
for (int i=0; i < randomTextArray.size(); i++) {
if (!(i%2 == 0)) { //resolve true only if we are in an odd line
for (int x=0; x <= randomTextArray.get(i).length(); x++ ){
if (!(x%2 == 0)) { //resolve true only if we are in an odd character
oddCharsOfRandomText += randomTextArray.get(i).charAt(x);
}
}
}
}
System.out.printf(oddCharsOfRandomText + "\n");
}
in.close();
}
提交这些文件
git status
提交这些文件
git status -s | grep D
然后运行此
git status -s | grep M
一旦执行了以上命令,就会重复提交历史记录以查找大文件并将其删除。
答案 5 :(得分:0)
以下是可以推入大于100MB的对象的步骤:
安装git-lfs
的说明可以在this table
假设您有*.jar
个大于100 MB的文件,然后运行git lfs track "*.jar
。您应该看到类似
跟踪“ * .jar”
git add .
git push -u origin master
您应该看到类似这样的内容:
Uploading LFS objects: 89% (398/447), 864 MB | 1.8 MB/s