如何使用Git将Github项目拉到本地
前言
因为国内访问GIthub速度比较慢,复制粘贴代码又慢效率也低,所以建议下载Git工具,直接把Github的项目整个下载到本地的文件夹
安装配置git
步骤如下:
sudoapt-getinstallgitgit config --global user.name "your user name"git config --global user.email "your email"
ssh-keygen -C"your email"-t rsa
cd ~/.ssh
gedit id_rsa.pub 将其中的所有内容复制,到git上添加SSH Key
使用步骤
1.打开Github
- 找到你想要获取的项目
- 复制GIthub项目的下载地址
2.打开Git
如果你是刚下载的Git,先配置一下用户名和邮箱
# 在Git Bash中输入以下命令1. git config --global user.name "你的用户名"2. git config --global user.email "你的邮箱"
基本配置就完成了!!!
下面介绍如何将项目下载到本地:
- 在你想要放置项目文件的位置新建一个文件夹
- 右键点击Git Bash Here
- 输入命令:
git clone 粘贴之前复制的项目下载地址
- 回车运行,进入下载
- 下载完成!
然后新建的文件夹里就会出现项目的所有文件啦!!!
啰嗦两句
- 还未注册Github的小朋友,先注册一下哦 Github官网
- 还未下载Git的小朋友,先行下载Git工具趴 git下载点这
提交代码到github
- 把github项目fork到本地
- 拉取你仓库你的同名项目到本地
- 修改里面的代码
- 提交代码操作
前三步,很简单就上面的操作
如何提交代码
git branch
看下你的本地分支git status
看下你的修改状态(修改了哪个文件,添加了哪个文件,删除了哪个文件)git stash
把本次修改先暂存起来,为了拉develop的代码
git pull origin develop
每次提交代码前一定要拉代码,保证本地拉到最新git stash pop
把暂存的代码释放出来和develop的合并,有冲突就解决一下git status
解决完冲突后,再看下你的修改状态,确保都是你的本次修改git checkout -b 分支名
切一个新分支,分支名要有意义一点(feat / fix / refine - xxx)git add .
添加本次所有的改动文件,如果不想提交那么多,就git add 要提交的文件名git commit -m "提交信息"
提交信息是本次提交的概述,如fix home page ui buggit push origin 分支名
直接点击remote中的URL,用浏览器打开,补充一下提交信息,assignee给同伴,勾选merge options,然后点commit就好了
注:
git commit -m "..."
以后,发现本地少提交一个文件,可以用
git commit --amend
修补提交,再次
git push -f
就可以了,不会出现多个commit的情况
- 遇到这个报错(Windows下)
问题分析:
格式化与多余的空白字符,特别是在跨平台情况下,有时候是一个令人发指的问题。由于编辑器的不同或者文件行尾的换行符在 Windows 下被替换了,一些细微的空格变化会不经意地混入提交,造成麻烦。虽然这是小问题,但它会极大地扰乱跨平台协作。
- 其实,这是因为在文本处理中,CR(CarriageReturn),LF(LineFeed),CR/LF是不同操作系统上使用的换行符,
Dos和Windows平台: 使用回车(CR)和换行(LF)两个字符来结束一行,回车+换行(CR+LF),即“\r\n”;
Mac 和 Linux平台:只使用换行(LF)一个字符来结束一行,即“\n”;
最早Mac每行结尾是回车CR 即’\r’,后mac os x 也投奔了 unix。
- 许多 Windows 上的编辑器会悄悄把行尾的换行(LF)字符转换成回车(CR)和换行(LF),或在用户按下 Enter 键时,插入回车(CR)和换行(LF)两个字符。
解决:
Git 可以在你提交时自动地把回车(CR)和换行(LF)转换成换行(LF),而在检出代码时把换行(LF)转换成回车(CR)和换行(LF)。
#win下 提交时转换为LF,检出时转换为CRLF
$ git config --global core.autocrlf true
#Linux、Mac 提交时转换为LF,检出时不转换
$ git config --global core.autocrlf input
合并一次MR中的多个commit
git log
查看log,看一下你有几次commit需要合并git rebase -i HEAD~X
X代表有几次commit需要合并,如HEAD2,HEAD3
把打开的rebase信息中的第二行的开头pick 修改为f,然后ctrl x,保存,会出现成功的提示哦
git push -f origin
分支名 搞定
几个常用命令
git stash list
查看暂存的所有记录git stash apply stash{X}
释放第x条记录git stash drop stash{X}
删除第x条记录git branch -D 分支名
删除本地分支
git push origin --delete 分支名
删除远程分支
删除commit
删除commit的三种方法
问题解决
- 代理问题
用了clash导致的
重新设置代理,将你的代理端口号,设置上去。
我的端口是7890,设置如下:
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8) send-pack: unexpected disconnect while reading sideband packet Writing objects: 100% (120/120), 91.63 MiB | 127.00 KiB/s, done. Total 120 (delta 2), reused 0 (delta 0), pack-reused 0 fatal: the remote end hung up unexpectedly
原因可能有文件过大、网速太差、以及一些国外资源因为墙的因素影响等等
解决方式:
1、文件太大,解决方式为git添加 compression 配置项
git config --global core.compression -1
compression 是压缩的意思,从 clone 的终端输出就知道,服务器会压缩目标文件,然后传输到客户端,客户端再解压。取值为 [-1, 9],-1 以 zlib 为默认压缩库,0 表示不进行压缩,1…9 是压缩速度与最终获得文件大小的不同程度的权衡,数字越大,压缩越慢,当然得到的文件会越小
2、可以增加git的缓存大小
git config --global http.postBuffer 1048576000 (1G)
3、配置git的最低速和最低速时间
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999 单位 秒
- 如果是网络问题
git config --global http.version HTTP/1.1
-or
git config --global http.version HTTP/2
- 上传文件太大- 设置大的缓存区- 设置长响应时间- 浅克隆
git config http.postBuffer 524288000
git clone --depth=1 xxx
- global配置对当前用户生效,如果需要对所有用户生效,则用–system
项目实在太大…
- 且你只需要其中的某一个文件或者文件夹
用这个网站:DownGit
在框框里输入你需要的下载的GitHub的文件的地址
版权归原作者 银晗 所有, 如有侵权,请联系我们删除。