浅谈Git基础、分支管理、版本管理及冲突解决【科普贴】

1.Git简介

  • Git 是一个开源的分布式版本控制系统,用于敏捷高效的处理任何项目的版本问题。用于快速高效地管理各种大小型的项目。是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

  • Git 与常用的版本控制工具 CVS,SVN 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

  • Git 把托管代码到远程,分布式托管,从而避免了本机磁盘损坏造成不可挽回的局面。

  • 在 Git 中即使用户离线,也能进行项目的提交和更新操作,等到下次连线服务器时进行整体的同步操作。

  • Git 可以对版本进行控制,可以发布多个版本并且实现在各个版本之间来回穿梭(实现原理:文件快照,每个版本都会有一个文件快照,比直接备份文件快速便捷。因此,Git仓库又被称为版本库)。

  • Git 具有强大的分支功能,可以快速实现团队协作。

  • Git又分为工作区,暂存区及版本库:

    ①工作区:个人 PC 中能看到的文件目录结构

    ②暂存区: stage/index,一般存放在.git/index 中,所以 git 中的暂存区也会称为索引

    ③版本库:工作区中的.git 隐藏文件,算不上是工作区,而是 Git 的版本库

2.安装Git:


在Windows上使用Git,可以从Git官网直接下载,一般情况下,采用next安装法即可。


安装完成后,在开始菜单里找到“Git”---->“Git Bash”(如下),会弹出一个类似命令行窗口的东西,就说明Git安装成功!
在这里插入图片描述

3.使用Git:

① 初始化本地仓库

git init

会在当前项目生成一个隐藏文件夹.git

如果删掉这个文件,那么会丢失当前项目的所有版本信息

② 配置秘钥对

  • 配置系统用户
git config --global user.name "xxx"    // 输入你的名字,中英文都可
git config --global user.email "xxx"   // 输入你的邮箱

配置信息在系统的用户目录下:c:\Users\当前系统用户名\.gitconfig文件内

  • 配置项目用户
git config user.name "xxx"   // 输入你的名字,中英文都可
git config user.email "xxx"  // 输入你的邮箱

配置信息在当前项目的 .git/config文件内

注意:优先级:项目级 > 系统级

③ 查看当前项目状态(每做一步操作都可以查看项目状态,不是必要操作,但是可以根据状态信息判断当前项目状态)

git status

④ 添加代码到暂存区

git add 文件名           // 添加一个文件
git add 文件夹名         // 添加一个文件夹 
git add --all           // 添加所有文件
git add.                // 添加所有文件

⑤ 提交代码到本地仓库

git commit -m "版本说明信息,一定要写"

⑥ 查看历史版本信息

  • 查看提交日志,当日志过多,被隐藏部分信息时,按回车键显示剩余信息,显示完毕后,按q键退出当前信息状态
git log 
  • 以一行的方式,列出简短的日志
git log --oneline
  • n为数字,表示最近的n条日志
git log -n
  • 查看最近git的所有操作日志。(版本回退时,可以参考)
git reflog

⑦ 版本回退

  • 回退到上一个版本,只能回退
git reset --hard HEAD ^
  • n为数字,回退到当前版本的上n个版本,只能回退
git reset --hard HEAD~n
  • 进行指定版本回退,推荐使用
git reset --hard "版本号"

⑧ 撤销和删除

  • 撤销工作区的修改
git checkout -- "文件名"
  • 撤销暂存区的修改
git reset HEAD "文件名"
git checkout -- "文件名"
  • 删除工作区的文件:
直接右键删除即可,或 rm -rf(建议不用)

4.远程仓库

  • 我们在本地保存代码很不安全,容易丢失,比如电脑丢失,所以我们一般会在服务器上建立远程仓库,然后下载到本地电脑一份,叫本地仓库,做修改,然后提交到本地git仓库,最后每完成一些功能,我们可以本地电脑上仓库代码同步(推送)到远程仓库

  • 免费的远程git服务器:GitHub (国外)、码云 (国内)

  • 注册账号,然后在远程服务器上新建一个仓库 ,然后把远程仓库下载到本地
    要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆

  • 每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

  • 总体步骤是:注册 -> 登录 -> 个人-> 创建新存储库 ->填写名称 ->设置权限 ->完成

  • 建立本地仓库与线上仓库的联系

git remote add 连接别名 https://gitee.com/用户名/项目名.git
// 例:
git remote add origin https://gitee.com/xxx/test.git
  • 推送到代码到远程
git push -u 连接别名 分支名
// 例:
git push -u origin master

5.分支管理

①分支的用途:
在这里插入图片描述

  • 每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支

  • HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支

  • 在一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点

  • 每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长

  • 当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上

  • 不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变

  • 假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并

  • 所以Git合并分支也很快!就改改指针,工作区内容也不变!合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支

②Git的分支操作:

意义代码
查看本地分支git branch
查看所有分支git branch -a
查看远程分支git branch -r
创建分支git branch 分支名
切换/选择 分支git checkout 分支名
创建+切换分支git checkout -b 分支名
合并某分支到当前分支git merge 分支名
删除分支git branch -d 分支名
强制删除分支git branch -D 分支名

6.解决冲突

1. 使用 fetch 获取远程最新信息并开辟一个临时分支
git fetch origin master:tmp
 2.将当前分支和临时分支的内容进行对比
git diff tmp
3. 再选择合并分支内容
git merge tmp

7.常用操作:

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 查看远程库信息,使用git remote -v

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值