fatal: early EOF fatal: index-pack failed


使用git clone 克隆代碼時出現以下報錯,這個一般是由於代碼倉庫太大,而本地網絡不是很穩定都可以造成以下問題
在這里插入圖片描述

解決方法如下

方法一:
1、關閉compression
$ git config --global core.compression 0

2、做一個部分克隆來截斷下來的信息量
$ git clone --depth 1 <repo_URI>

3、轉到新目錄並檢索克隆的其余部分
$ git fetch --unshallow
或者交替克隆
$ git fetch --depth=2147483647

4、最后拉取所有
$ git pull --all
方法二:

可以將這些行添加到全局git配置文件.gitconfig中,這個文件在用戶家目錄下

[user]
	name = xxxx
	email = xxxx@admin.com
	packedGitLimit = 512m 
	packedGitWindowSize = 512m 
[http]
	postBuffer = 1048576000
	lowSpeedLimit = 0
	lowSpeedTime = 999999
[core]
	compression = 0
[pack] 
	deltaCacheSize = 2047m 
	packSizeLimit = 2047m 
	windowMemory = 2047m

其實只需要以下內容即可

[user]
	packedGitLimit = 512m 
	packedGitWindowSize = 512m 
[pack] 
	deltaCacheSize = 2047m 
	packSizeLimit = 2047m 
	windowMemory = 2047m

git常用命令整理

一、基礎命令

git clone:這是一種較為簡單的初始化方式
git init 和 git remote:這種方式稍微復雜一些,當你本地創建了一個工作目錄,你可以進入這個目錄,使用'git init'命令進行初始化
git remote add 命令來增加一個遠程服務器端,例如:git  remote  add  origin  git://github.com/jQuery/jquery.git

二、 Git 常用命令

1) 遠程倉庫相關命令
檢出倉庫:    $ git clone git://github.com/jQuery/jquery.git
查看遠程倉庫:$ git remote -v
添加遠程倉庫:$ git remote add [name] [url] 
刪除遠程倉庫:$ git remote rm [name]
修改遠程倉庫:$ git remote set-url --push [name] [newUrl]
拉取遠程倉庫:$ git pull [remoteName] [localBranchName]
推送遠程倉庫:$ git push [remoteName] [localBranchName]
*如果想把本地的某個分支test提交到遠程倉庫,並作為遠程倉庫的master分支,或者作為另外一個名叫test的分支,如下:
$ git push origin test:master         // 提交本地test分支作為遠程的master分支
$ git push origin test:test           // 提交本地test分支作為遠程的test分支

2)分支(branch)操作相關命令
查看本地分支:$ git branch
查看遠程分支:$ git branch -r
創建本地分支:$ git branch [name]   #注意新分支創建后不會自動切換為當前分支
切換分支:$ git checkout [name]
創建新分支並立即切換到新分支:$ git checkout -b [name]
刪除分支:$ git branch -d [name]  # -d選項只能刪除已經參與了合並的分支,對於未有合並的分支是無法刪除的。如果想強制刪除一個分支,可以使用-D選項
合並分支:$ git merge [name]      #將名稱為[name]的分支與當前分支合並
創建遠程分支(本地分支push到遠程):$ git push origin [name]
刪除遠程分支:$ git push origin :heads/[name] 或 $ gitpush origin :[name] 
創建空的分支:(執行命令之前記得先提交你當前分支的修改,否則會被強制刪干凈沒得后悔)
$ git symbolic-ref HEAD refs/heads/[name]
$ rm .git/index
$ git clean -fdx

3)版本(tag)操作相關命令
查看版本:$ git tag
創建版本:$ git tag [name]
刪除版本:$ git tag -d [name]
查看遠程版本:$ git tag -r
創建遠程版本(本地版本push到遠程):$ git push origin [name]
刪除遠程版本:$ git push origin :refs/tags/[name]
合並遠程倉庫的tag到本地:$ git pull origin --tags
上傳本地tag到遠程倉庫:$ git push origin --tags
創建帶注釋的tag:$ git tag -a [name] -m 'yourMessage'

4) 子模塊(submodule)相關操作命令
添加子模塊:$ git submodule add [url] [path]
如:$git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
初始化子模塊:$ git submodule init  # 只在首次檢出倉庫時運行一次就行
更新子模塊:$ git submodule update  # 每次更新或切換分支后都需要運行一下

刪除子模塊:(分4步走哦)
1) $ git rm --cached [path]
2) 編輯".gitmodules"文件,將子模塊的相關配置節點刪除掉
3) 編輯" .git/config"文件,將子模塊的相關配置節點刪除掉
4) 手動刪除子模塊殘留的目錄
5)忽略一些文件、文件夾不提交
在倉庫根目錄下創建名稱為".gitignore"的文件,寫入不需要的文件夾名或文件,每個元素占一行即可,如
target
bin
*.db

三、 git 命令詳解

①git pull:從其他的版本庫(既可以是遠程的也可以是本地的)將代碼更新到本地,例如:‘git pull origin master’就是將origin這個版本庫的代碼更新到本地的master主枝
②git add:是將當前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示記入了版本歷史中,這也是提交之前所需要執行的一步,例如’git add app/model/user.rb’就會增加app/model/user.rb文件到Git的索引中
③git rm:從當前的工作空間中和索引中刪除文件,例如’git rm app/model/user.rb’
④git commit:提交當前工作空間的修改內容,例如’git commit -m story #3, add user model’,提交的時候必須用-m來輸入一條提交信息,該功能類似於SVN的commit
⑥git push:將本地commit的代碼更新到遠程版本庫中,例如’git push origin’就會將本地的代碼更新到名為orgin的遠程版本庫中
⑦git log:查看歷史日志
⑧git revert:還原一個版本的修改,必須提供一個具體的Git版本號,例如’git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20’,Git的版本號都是生成的一個哈希值


上面的命令幾乎都是每個版本控制工具所公有的,下面就開始嘗試一下Git獨有的一些命令:
⑨git branch:對分支的增、刪、查等操作,例如’git branch new_branch’會從當前的工作版本創建一個叫做new_branch的新分支,'git branch -D new_branch’就會強制刪除叫做new_branch的分支,'git branch’就會列出本地所有的分支
⑩git checkout:Git的checkout有兩個作用,其一是在不同的branch之間進行切換,例如’git checkout new_branch’就會切換到new_branch的分支上去;另一個功能是還原代碼的作用,例如’git checkout app/model/user.rb’就會將user.rb文件從上一個已提交的版本中更新回來,未提交的內容全部會回滾
⑪git rebase:實際上是將分支點從C移到了G,這樣分支也就具有了從C到G的功能
⑫git reset:將當前的工作目錄完全回滾到指定的版本號,假設我們有A-G五次提交的版本,其中C的版本號是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我們執行了’git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20’那么結果就只剩下了A-C三個提交的版本
⑬git stash:將當前未提交的工作存入Git工作棧中,時機成熟的時候再應用回來
⑭git config:利用這個命令可以新增、更改Git的各種設置,例如’git config branch.master.remote origin’就將master的遠程版本庫設置為別名叫做origin版本庫
⑮git tag:可以將某個具體的版本打上一個標簽,這樣你就不需要記憶復雜的版本號哈希值了,例如你可以使用’git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20’來標記這個被你還原的版本,那么以后你想查看該版本時,就可以使用 revert_version標簽名,而不是哈希值了
Git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM