问题:git在使用过程中上传大的项目到gitlab上无法实现,会出现如下错误:
网上有博客说可以使用git config http.postBuffer 1024000000 这样的方式试了过后发现根本行不通,http每次上传文件大小被限制,所以无法解决根本问题。
解决方案:经查询资料发现可以使用git官方为开发者使用的git ssh方式传输文件,从而实现git上上传占用空间较大的项目,实现方式主要分为以下几个步骤。
一.生成sshkey。
1.生成sshkey的方法:通过在本地项目的git仓库中,使用git Bash打开窗口,在命令行中输入
$ cd ~/.ssh (进入到ssh的目录)
$ ls id_dsa (列出ssh公钥 IP白名单)
会出现如下生成的公钥
id_dsa.pub id_dsa known_hosts config
如果有上面公钥不需其他配置,若没有需要先生成相应的公钥,生成方式如下:
$ ssh-keygen -t rsa -C "[email protected]" (生成公钥 )输入完成提示如下
# Creates a new ssh key using the provided email
# Generating public/private rsa key pair.
# Enter file in which to save the key (/home/you/.ssh/id_rsa):
此时直接回车就可以,然后要求输入密码,提示如下
Enter passphrase (empty for no passphrase): [Type a passphrase]
# Enter same passphrase again: [Type passphrase again]
输入完成后确认密码即可完成公钥的生成,可通过如下指令完成公钥的查询。
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlE LEVf4h9lFX5QVkbPppSwg0cda3 Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA t3FaoJoAsncM1Q9x5+3V 0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx NrRFi9wrf+M7Q== [email protected]
二.配置sshkey到gitlab中
生成公钥以后需要将生成的公钥配置在gitlab的管理平台当中,配置的位置在gitlab的个人中心的位置,如下图所示:
上面的public-key就是刚刚配置好的,可使用ADD SSH KEY添加多个sshkey。
三.修改远程分支的地址
使用 git remote set-url origin ssh://[email protected]:10022/liuchao/RiceApp.git 这样的指令将远程分支的地址从http协议切换到ssh协议。
切换远程仓库以后,进行git push clone pull操作是可能出现IP不在白名单的问题异常,这是需要将出现问题处显示的未加入白名单的ip和公钥加入到known_hosts文件中。如下所示:
未信任到白名单的IP:[172.16.1.39]:10022
生成的公钥:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTyG8OFUN3bJ7b/OEziq1OlVjv7rXSjBkDaA1C3TmuiQgfFzNgpgFo/Qm/0DYVlcTn+H3RGgtY/7VyikyguWDLnsfFOEv/Z4Oj8A2jkc7XBxKGZA7PlXxTkzu6Z+EbLYD9sj+ERg7Y/VFIhJUjpFcyVLC6J22G+uMPj7bdRfN+hobN2f8KmvB8pl+2G2VcSGNubGJCHisbTpft/YE2iYw0f95GF3Ufd+Tg7rdLFei+QpjeuOe9/sr5X0q8YlLvX2dUmSSMn6joA3hIgfSIWpFrQm/5a34TdXVQWCZeLleON/tpSxz1pDg2i0u3vYXFBDeaLsw/7dHeDcgCBWdNwLth [email protected]
结合后的内容:[172.16.1.39]:10022 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTyG8OFUN3bJ7b/OEziq1OlVjv7rXSjBkDaA1C3TmuiQgfFzNgpgFo/Qm/0DYVlcTn+H3RGgtY/7VyikyguWDLnsfFOEv/Z4Oj8A2jkc7XBxKGZA7PlXxTkzu6Z+EbLYD9sj+ERg7Y/VFIhJUjpFcyVLC6J22G+uMPj7bdRfN+hobN2f8KmvB8pl+2G2VcSGNubGJCHisbTpft/YE2iYw0f95GF3Ufd+Tg7rdLFei+QpjeuOe9/sr5X0q8YlLvX2dUmSSMn6joA3hIgfSIWpFrQm/5a34TdXVQWCZeLleON/tpSxz1pDg2i0u3vYXFBDeaLsw/7dHeDcgCBWdNwLth [email protected]
四.通过以上过程可以将大容量的代码传输到gitlab服务器上。