Git笔记,常用命令

概述
  1. 免费的开源分布式版本控制系统,以往的集中式版本控制,大家都从中央仓库(远程库,代码托管中心)进行版本控制,一旦中央仓库出现问题,大家就没办法开发了。而Git,大家会从中央仓库把代码拉到本地,进行版本控制,开发完成可以push推送到中央仓库。就算中央仓库宕机,也不影响大家本地开发和本地版本控制
    在这里插入图片描述
  1. Git本地分为3个区,我们平常写代码的是工作区(比如idea建立到本地磁盘的项目),当我们在工作区写好代码后,可以使用git add命令,将代码添加到暂存区
  2. 暂存区的代码只是进行临时存储,让git知道你有这些代码。当确定没有问题后,可以通过git commit命令将代码提交到本地库,从而生成历史版本。
  3. 本地库和暂存区不同,生成历史版本后,代码就删不掉了,只能用做回滚(代码恢复)或者基于这个版本修改,生成新的版本。除非你删本地库(删库跑路)。
  4. 这就是本地版本控制的大致流程,之后可以通过push命令,将代码推送到中央仓库(比如公司用GitLab建立的局域网仓库,比如GitHub,码云等互联网免费仓库)
Git和代码托管中心
  1. 代码托管中心(中央仓库,远程库),是基于网络服务器的远程代码仓库,一般我们简单称为远程库
  2. 主流局域网远程仓库:GitLab
  3. 主流互联网远程仓库:GitHub(外网,国外网站),Gitee码云(国内网站)

1. Git命令

  1. Windows环境下安装成功后(和Linux使用没有区别,命令都一样),鼠标右键菜单选择Git Bash
    在这里插入图片描述
命令描述
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户签名
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m “日志信息” 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

1.1 设置用户签名

  1. 只需要设置一次,提交代码时,不设置用户签名是会报错的,用来区分不同操作者身份,用户的签名在每个版本的提交信息中可以看到,以确认本次提交是谁做的。
  2. 注意:这里设置的用户签名只是标识,和连接远程库,例如GitHub等代码托管平台的账号没有任何关系。
  3. 需要设置用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱@163.com"
  1. 设置成功后,会在你当前登录用户的文件夹下,.gitconfig文件中保存相关信息
    在这里插入图片描述

1.2 初始化本地库

  1. 想要让git进行版本控制,就得让git获取你目录的管理权
  2. 也就是通过git init命令,让它对指定目录初始化,初始化成功,目录中会生成.git文件夹(是一个隐藏文件),它就是本地库,如果你删除这个库,将丢失你的所有代码分支和历史版本记录
    在这里插入图片描述
  3. 进入需要git管理的文件夹,然后执行git init命令即可
git init
# 如果是在linux想要查看隐藏目录,需要直接通过ll命令无法查看,需要ll -a命令
ll -a

1.3 查看本地库状态

  1. 可以通过git status查看本地库的状态,方便了解分支信息
    在这里插入图片描述
  1. On branch 分支名:显示当前处于哪个分支
  2. Changes not staged for commit:显示还没有提交的文件,红色表示更改过,绿色表示距离上次提交还没有更改过
  3. Untracked files:还没有追踪的文件(只在工作区,没有到暂存区),还没有对其进行版本控制的文件

1.4 暂存区操作命令

  1. 前面查看本地库状态时,Untracked files会展示在工作区的文件,如果想要对这些文件版本控制,可以通过git add xxx命令,将其添加到暂存区,也可以从暂存区删除。
  2. 可以使用通配符,也可以特指某些文件
git add hello.txt # 将指定hello.txt文件添加到暂存区
git add * # 将所有文件添加到暂存区
git rm --cached hello.txt # 将指定hello.txt文件从暂存区删除,工作区不受影响

1.5 本地库

  1. 当文件提交到暂存区后,可以提交到本地库,产生历史版本
  2. 通过git commit -m “日志信息” 要提交的文件名,来进行提交
# 提交版本,并设置日志信息
git commit -m "修改导弹击中敌方领土后,丢失视野的bug" hello.txt
# 查看提交版本
git reFlog
  1. 此时再次查看状态会提示,没什么可以提交的,工作树非常干净。当你再次修改代码,才会再次提示你提交到暂存区什么的操作。
    在这里插入图片描述
  2. 查看提交版本git reFlog,可以看到相关信息,其中965c6a1是版本号的精简版(前7位),后面first commit是提交时设置的日志信息
    在这里插入图片描述
  3. 通过git log命令查看详细信息
    在这里插入图片描述

1.6 版本穿梭

  1. 提交了这么多版本,如何切换代码版本呢?
  2. 可以通过版本号(精简版就可以),使用命令git reset --hard 版本号,切换到指定版本
    在这里插入图片描述
git reset --hard 版本号
  1. 版本穿梭虽然是移动到特定版本,它会同步代码到工作区,但你无法改变本地库存储的版本代码。
  2. 也就是说,你就是再次修改工作区代码进行提交,也只会产生新的版本,而不会改变当前本地库中对应版本的代码

2. Git分支操作

在这里插入图片描述

  1. 一般生产环境(供开发、测试人员使用)和线上环境(用户使用),需要两个不同的分支
  2. 这样开发人员操作的分支,不会影响到线上分支的代码
  3. 一般,生产环境的代码已经经过重重测试确保没有问题后,才会进行分支合并
  1. 版本控制过程中,往往会同时推进多个任务,每个任务为了互不影响,都会建立单独的分支,让程序员从主线上分离开来,开发自己的分支,不会影响主线分支。
  2. 当大家都开发的差不多了,在进行代码整合测试,合并分支
  3. 优点:同时并行推进多个功能开发,提高开发效率。各分支开发过程中,如果某分支出现问题,不会影响其它分支,失败的分支可以删除重新开始。
命令描述
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定分支合并到当前分支上

2.1 冲突合并

  1. 当A分支和B分支进行合并的时候,发现两个分支对同一个文件的代码,都进行了修改
  2. 此时Git就不知道该用谁的代码了,需要我们人为决定
    在这里插入图片描述
    在这里插入图片描述
  3. 人为决定好后,保存文件,之后就需要重新添加到暂存区,提交到本地库(提交时不可以指定文件名,因为不知道提交哪个文件)
    在这里插入图片描述

3. 团队协作

3.1 团队内协作

在这里插入图片描述

  1. 刚开始可以使用pull命令将远程库拉取到本地库,当第一版代码在本地库写好后,push到远程库
  2. 此时团队其它人就可以进行clone,将第一版代码下载下来,在自己的本地进行修改
  3. 修改好之后,可以再次push到远程库

3.2 跨团队协作

在这里插入图片描述

  1. 当岳不群团队要和东方不败的团队协作时(假设东方不败对岳不群团队的项目进行修改)
  2. 东方不败先通过fork命令将岳不群的库拉取一份到自己的远程库,然后自己的团队进行团队内协作,修改代码
  3. 修改好后,发送一个Pull request推送请求给岳不群,告诉他修改好了
  4. 岳不群审核后,决定没有问题,通过merge命令,将代码进行合并。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值