您的位置:首页 > 科技 > 能源 > Git实战精粹

Git实战精粹

2024/12/22 9:26:30 来源:https://blog.csdn.net/m0_69402477/article/details/141531595  浏览:    关键词:Git实战精粹

一、快速入门

1. 什么是Git

Git是一个分布式的版本控制软件。

  • 软件,类似于QQ、office、dota等安装到电脑上才能使用的工具
  • 版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据
  • 分布式
    • 文件夹拷贝
    • 本地版本控制
    • 集中式版本控制
    • 分布式版本控制

2. 为什么要做版本控制

要保留之前所有版本,以便回滚和修改

3. 安装git

  • 针对不同系统的安装详见:
https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

二、版本控制–Git管理文件夹

想要让git对—个目录进行版本控制需要以下步骤:

  • 进入要管理的目录
    在这里插入图片描述

  • 执行初始化命令

    git init
    

    在这里插入图片描述

  • 检测当前目录下文件状态

    git status
    注:新增的文件和修改过后的文件都是红色
    

    在这里插入图片描述

  • 管理指定文件(红变绿), .代表当前目录下没有被管理的所有文件。红色:新增的文件/修改了原老文件,其次执行git add .(变绿色)。绿色:git已经管理起来了,其次执行git commit -m ‘描述信息’。最后生成版本。

    git add 文件名
    git add .
    

    在这里插入图片描述
    在这里插入图片描述

  • 个人信息配置:用户名、邮箱【一次即可】
    在这里插入图片描述

    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    
  • 生成版本

    git commit -m '描述信息'
    

    在这里插入图片描述
    如果你对里面文件修改了,那么执行上述命令再次操作让其生成V2版本

  • 查看版本记录

    git log
    

    在这里插入图片描述

2.1 Git 三大区域

在这里插入图片描述

2.2 回滚

  • 回滚至之前版本

    git log
    git reset --hard 版本号
    

    在这里插入图片描述
    第三个功能就会被git自动替换掉

  • 回滚至之后版本

    git reflog
    git reset --hard 版本号
    

    在这里插入图片描述

2.3 分支

分支可以给使用者提供多个环境,意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
在这里插入图片描述

  • 查看分支

    git branch
    

    在这里插入图片描述

  • 创建分支

    git branch 分支名称
    

    在这里插入图片描述

  • 切换分支

    git checkout 分支名称
    

    在这里插入图片描述

  • 分支合并

    首先切换到要合并的分支上:git chechout master
    git merge 想要合并的分支        git merge bug    把bug分支合并到master
    注意:切换分支在合并
    

    在这里插入图片描述
    在这里插入图片描述
    紧急修复完后其实,bug分支就没有用了

  • 删除分支

    git branch -d 分支名称
    

    在这里插入图片描述

2.4 工作流

在这里插入图片描述
创建dev分支,在dev分支上去写开发的新功能,开发没有问题了,合并到master分支

2.5 基于github代码托管

在这里插入图片描述

  • 注册github账号
  • 创建仓库
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 本地代码推送

在这里插入图片描述
在这里插入图片描述

# 1.给远程仓库起别名
git remote add origin 远程仓库地址
# 2.向远程推送代码
git push -u origin 分支

2.5.1 初次在新电脑下载代码

# 1.克隆远程仓库代码
git clone 远程仓库地址(内部已实现git remote add origin 远程仓库地址)
# 2. 切换分支
git checkout 分支名称
  • 在新电脑下载完代码后,继续开发
# 1.切换到dev分支进行开发
git checkout dev
# 2.把master分支合并到dev(仅一次)
git merge master
# 3.修改代码
# 4.提交代码
git add .
git commit -m 'xxx'
git push origin dev

2.5.2 在原先旧电脑继续写代码

# 1.切换到dev分支进行开发
git checkout dev
# 2.拉代码
git pull origin dev
# 3.继续开发
# 4.提交代码
git add .
git commit -m 'xxx'
git push origin dev

2.5.3 在新电脑上继续开发

# 1.切换到dev分支进行开发
git checkout dev
# 2.拉下最新代码(不必填clone,只需要通过pull获取最新代码即可)
git pull origin dev
# 3.继续开发
# 4.提交代码
git add .
git commit -m 'xxx'
git push origin dev

开发完毕,上线

# 1.将dev分支合并到master,进行上线
git checkout master
git merge dev
git push origin master# 2.把dev分支也推送到远程
git checkout dev
git merge master
git push origin dev

2.6.4 忘记推送代码

注:忘记了推送代码,后面合并起来可能会发生冲突

  • 在新电脑开发
# 写一个a1.py编辑
vim a1.py
# 内容为:在新电脑开发了50%功能,有女神约饭忘记提交代码

在这里插入图片描述
在这里插入图片描述

  • 在旧电脑开发
    在这里插入图片描述
# 在旧电脑写了其他的功能,写了个a2.py,a1.py
vim a2.py
内容为:其他功能
vim a1.py
内容为:在旧电脑写了其他功能

在这里插入图片描述

  • 再到新电脑拉代码(可能会产生一些冲突,因为:因为有一些代码提交到本地了,还没有提交到github)
    在这里插入图片描述
    因为在旧电脑编写了a1,a2在新电脑没有编写a2所以a2会自动合并,a1在新旧电脑都有编辑,可能改的同一行就可能产生冲突
  • 解决冲突
  1. 在新电脑打开a1-----》vim a1.py,会发现把两个记录保留合并了

在这里插入图片描述
在这里插入图片描述

  1. 解决完后,继续开发
    在新电脑上 vim a1.py,内容为:在公司开发了50%,再继续开发50%

在这里插入图片描述

  1. 最后
    git add .
    git commit -m 'xxx'
    git push origin dev

在这里插入图片描述
在这里插入图片描述

  1. 上线,把dev合并到master,然后把master推送到线上
补充:
git pull origin dev # 从代码仓库拉代码
等价于下面两条命令:
git fetch origin dev
git merge origin/dev
为什么看下图:

在这里插入图片描述
在这里插入图片描述

2.6 rebase(变基)应用场景

作用:可以保持git提交记录简洁,不分叉

  • 第一种:多个记录整合成一个记录
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

注意事项:合并的是那些没有提交到仓库的那些记录

  • 第二种:有点像合并
    在这里插入图片描述
记录图形展示
git log --graph --pretty=format:"%h %s"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 先切回到dev分支
  2. git rebase变基(变成一个基本的树干),然后把master放进来。git rebase master
  3. 最终的代码是放在master分支的,所以切换到master,然后再git merge 到dev。git checkout master, git merge dev。
  4. 这样提交就变成一条线了

在这里插入图片描述

  • 第三种:可能会产生分叉(往下来拉代码会与本地代码无形的进行一次合并,一样的就会冲突,不一样的就会自动合并)
  • 原来往下来拉是git pull ,
  • 为了避免分叉,执行git fetch将代码拉下来
  • 这样拉下来会与本地合并,所以用git rebase就可以了。git rebase origin/分支
总结:
先不用git pull origin 分支名称,用git fetch origin 分支名称。紧接着用git rebase origin/分支名称
  • 注意事项

在执行git rebase时----》冲突
解决:会提示你执行比如git add 1.py啥的,执行完在执行git rebase --continue
在这里插入图片描述
在这里插入图片描述

2.7 快速解决冲突

    1. 安装beyond compare
      查看compare安装路径在这里插入图片描述
      在这里插入图片描述
    1. 在git中配置
      --local:只在当前项目有效
    git config --local merge.tool bc3   # 合并工具变成bc3
    git config --local mergetool.path '/usr/local/bin/bcomp'  # 这个路径就是compare的安装路径
    git config --local mergetool.keepBackup false # 解决冲突的时候不用保留源文件
    
    1. 应用beyond compare 解决冲突
    git mergrtool
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、多人协同开发工作流

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com