Git使用笔记

452 阅读5分钟

1.Git的工作流程

Git的工作区域有4个,分别是:远程仓库、本地仓库、工作区、暂存区

  • 基本操作如图

2.Git的基本概念

  • Repository(仓库):存放我们项目代码的地方,每个项目对应一个仓库。
  • Star(收藏)
  • Fork(复制项目):将项目复制到自己的GitHub上。如果修改了其中的代码,可以向原作者提交,如果原作者同意了我们的提交,则完成了对项目的贡献。
  • Pull Request(发起提交请求)

打个比方:当你想向原作者提交自己的修改时,要走一个流程:

  1. 先fork别人的仓库,将代码复制到自己的仓库中。
  2. clone到本地分支,做一些bug fix。
  3. 发起pull request给原仓库,让他看到你修改的bug。
  4. 原仓库review这个bug,如果是正确的话,就会merge到他自己的项目中。
  • Watch(关注):当关注的项目发生版本变化时会接收到通知。
  • Issue(讨论):发起问题讨论。

3.Git常用命令

  • git status:查看Git工作区的状态
  • git diff < filename >:查看更改的内容
  • git add < filename >:将文件放入缓存区中
  • git commit -m '注释' < filename >:将文件提交到本地仓库
  • git push:将本地仓库的文件推送到远程仓库
  • git pull:将远程仓库的更新拉取到本地仓库
  • git log:查看提交(git commit)的日志
  • git reflog:查看所有的操作日志
  • git reset --hard < commit id >:回退到指定的commit版本下(commit id在log中查看)
  • git checkout --< filename >:撤销未提交到缓存区的修改
  • git reset HEAD --< filename >:撤销已提交到缓存区的修改

4.Git分支命令操作

在开发新的任务迭代的时候,我们先从现在的项目代码完全一样地拷贝一份到一个新的分支上,我们就暂时命名为1分支。

突然产品经理来找我们改需求,我们先将1分支进行提交(注意此时主分支也就是项目原来的代码并没有变化,变化的内容只是在1分支下)。

然后在切回原来项目的分支(主分支)下再创建一个和主分支一模一样的分支,这里我们暂时命名为2分支,这样就可以在2分支下进行新需求的开发,并且可以同时开发1分支。

  • git branch:查看当前仓库所在的分支,master是创建仓库后的默认分支。<-r>查看远程分支。
  • git branch < branch name >:进行分支的创建
  • git checkout < branch name >:进行分支的切换
  • git checkout -b <本地分支名> <origin/远程分支名>:采用此种方法建立的本地分支会和远程分支建立映射关系。
  • git push origin < branch name >:提交分支下的内容到远程仓库
  • git pull origin < branch name >:将远程仓库分支的内容更新到本地仓库分支
  • git merge < branch name >:将< branch name >的分支内容合并到当前分支上

5.git配置用户信息

  • git config (--global) user.email "邮箱":配置提交者邮箱,无global表示当前仓库,有global表示全局
  • git config (--global) user.name "用户名":配置提交者用户名,无global表示当前仓库,有global表示全局

6.git本地仓库和远程仓库的关联

  • 初始化一个本地Git仓库(把本地的文件夹初始化成一个Git可以管理的版本库)
git init
  • 关联一个远程仓库
git remote add origin https://github.com/<username>/<reponame>.git
  • 第一次推送到远程仓库,使用-u选项

下面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。

git push -u origin master

7.git如何避免”warning: LF will be replaced by CRLF“提示

CRLF, LF 是用来表示文本换行的方式。CR(Carriage Return) 代表回车,对应字符 '\r';LF(Line Feed) 代表换行,对应字符 '\n'。由于历史原因,不同的操作系统文本使用的换行符各不相同。主流的操作系统一般使用CRLF或者LF作为其文本的换行符。其中,Windows 系统使用的是 CRLF, Unix系统(包括Linux, MacOS近些年的版本) 使用的是LF。

解决方法:

设置该仓库为core.autocrlf=false,即WINDOWS下也使用LF换行。若使用--global参数则全局生效,不建议使用。

git config <--global> core.autocrlf false

8.GitHub不允许上传大于100M文件的问题解决

git-lfs官网里写的很清楚,需要下载一个大文件支持命令行。

9.Git版本回退

git reset [--hard] HEAD^
  • HEAD参数怎么用

HEAD 最近一个提交 HEAD^^ 上一次的上一次的提交(倒数第三次)

HEAD^^^ 倒数第四次的提交

HEAD~0 最近一个提交

HEAD~1 上一次提交

HEAD^2 上一次的上一次的提交(倒数第三次)

HEAD^3 倒数第四次的提交

  • 其它选项的含义

--mixed:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作。这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

--soft:不删除工作空间改动代码,撤销commit,不撤销git add .

--hard:删除工作空间改动代码,撤销commit,撤销git add .,注意完成这个操作后,就恢复到了上一次的commit状态,注意数据丢失

10.Git设置代理

这是在已有SSR/SS科学上网的前提下,利用SSR的sock5接口让Git通过SSR连接远程仓库。 其中的127.0.0.1:1080是SSR的SOCK5协议默认端口。

git config –global http.proxy ‘socks5://127.0.0.1:1080’
git config –global https.proxy ‘socks5://127.0.0.1:1080’

11.error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errfno 10054解决方法

git pull/clone/push的时候出现如下错误

error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errfno 10054
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: unpack-objects faile

这是由于同步的数据过大导致的,可以修改当前仓库的配置文件./.git/config,加入[http]标签下的内容增大通信缓存区大小。

也可以直接使用git config http.postBuffer 524288000配置。