git 学习总结

引言(三问三答)

  1. 问:我们为什么要用git?
    答:我们可以通过git进行版本控制,比如我们可以通过git回退到我们之前写过的任意版本,而不是通过复制多份备份文件进行版本控制。
  2. 问:什么是git?
    答:git实际上就是一种文件版本控制系统。
  3. 问:git与github有什么区别?
    答:git是一种分布式版本控制系统,github是一个开源网站,它为开源项目提供了git存储。因为大量的开源项目转移至github,所以GitHub网站是git版本控制的典型实例。

集中式与分布式区别

集中式版本控制

集中式很好理解,顾名思义,所有进行版本控制的文件都保存在一台服务器上,由这台中央服务器对文件进行统一版本管理。每个人(客户机)要想获取什么文件,直接从中央服务器进行读写操作。但是这有个缺点就是这种模式是需要网的,每次保存或读取一个版本都需要网络。所以网络环境较差时,体验并不是很好。

分布式版本控制

相对于集中式版本控制,分布式是不要中央服务器进行统一版本管理的。每个人(客户机)都拥有一个版本库,所以减去了上传与下载的操作。至于多人协作同一文件时,我们只需要把各自修改的地方提交给对方就好了,对方就能看到别人修改的地方了。当然,这种文件仅限于文本文件能看到改动,像二进制文件(比如word、图片之类)是看不到改动的,虽然也能存储。

当然实际工作中,为了更好的满足工作需要。往往需要一台中央服务器来存储大家的文件,因为这样的话,如果某个人有时候不方便提交文件给别人,则别人可以直接从中央服务器上进行读取了。

常用的git命令

  • git init 初始化git仓库
  • git status 查看git状态
  • git add . 将改动后的文件添加至Stage(暂存区)
  • git commit -m "commit content" 将暂存区内的文件提交至版本库,这是就会新增一个版本,也就是我们通常说的‘存档’。
  • git reset --hard commitID 将当前版本回退到到版本号为commitID的版本,版本号输前几位即可,版本号也能用HEAD代替,HEAD代表当前版本,HEAD^代表上一版本。版本号可通过git loggit reflog查询
  • git log 记录至开始至当前版本的提交记录
  • git reflog 记录HEAD指针指向的版本号
  • git checkout -- file 撤销工作区的修改
  • git reset HEAD <file> 撤销暂存区里的文件,重新返回工作区
  • git tag v1.0 给当前版本打上标签

工作区、暂存区、版本库

git 版本控制系统为三块区域,分别是工作区、暂存区、版本库,接下来具体讲讲三者的含义。

工作区

也就是我们实际的工作目录,在执行git add .命令之前,我们所有的修改都在工作区内。

暂存区

暂存区又称stage,是指我们在执行git add .之后,git commit -m "commit-content"之前,我们把工作区内的修改添加进了暂存区,这时工作区是干净的(clean),只有暂存区记录我们修改的内容。

版本库

是指我们在执行git commit -m "commit-content"后,将暂存区内的修改提交到版本库,这时暂存区内的是干净的(clean),这才算是把我们的修改真正可以进行版本控制。换句话说,提交到版本库中的内容是可以回溯到任何一个状态的。版本控制系统只记录版本库中的各个状态,所以我们要把修改的内容进行版本控制,要进行如下流程才能实现:工作区–>暂存区–>版本库。

远程仓库

git是一种分布式版本控制系统

  1. 创建SSH Key: ssh-keygen -t rsa -C "youremail@example.com"
  2. 本地版本库与远程服务器上版本库进行连接:git remote add origin git@github.com:Louis14lan/test.git 此处git@github.com:Louis14lan/test.git替换称自己的项目地址,如下图所在地方。
    在这里插入图片描述
  3. git push -u origin master: 将本地当前分支推送给远程(origin)的master分支,并于远程master分支建立联系,以后提交就只需要git push origin master

分支管理

  1. git branch dev 创建dev分支
  2. git checkout dev 切换至dev分支(切换分支命令)
  3. git checkout -b dev 语句1与语句2的结合
  4. git merge dev --no-ff -m "commit" 在切换至主分支时,对dev分支进行合并.--no-ff 一般带上,可以有merge历史。
  5. git branch -d dev 删除分支,合并后删除dev分支(-D 表示强行删除)
  6. git branch 查看git仓库有多少分支
  7. git log --graph 查看分支合并情况
  8. 注意:一般不要在master分支上进行合并,应该开一个dev分支,每个人都在dev分支上进行合并,然后通过dev统一合并到master分支上。

多人协作模式

  • git push origin <branch-name> 提交自己的分支至远程
  • 如果push失败,则说明别人上传的文件与你有冲突,你得重新用git pull命令pull最新的版本,然后再解决冲突。
  • 根据冲突文件提示修改冲突内容,并重新push
  • 进行push操作 git push origin <branch-name>
注意:

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令 git branch --set-upstream-to <branch-name> origin/<branch-name>

参考

主要参考廖雪峰git教程,算是此教程的一个小结吧,把常用的一些命令和概念总结了一下,方便自己以后查阅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值