当前位置: 首页 > article >正文

Git分布式版本控制系统

1. 版本控制系统

 版本控制系统主要分为两类:集中式、分布式。

集中式:SVM(工作流程:所有的文件都保存在中央服务器上,每个电脑上只保存了一个副本,当需要修改时,先下载中央服务器上的最新版本文件,添加修改内容,再上传到中央服务器中)

        缺点:单点故障问题,如果中央服务器出现网络问题或者故障,所有子服务器将无法工作。

分布式:Git(每个人的电脑上都有一个完整的版本库,所以在本地进行修改,没有单点故障问题,当中央服务器出现故障,也可以正常工作;当需要将自己内容分享给其他人时,只需要将仓库同步即可。)

2. 安装与使用

1. 下载后,查看是否存在: git -v

2. 全局配置

        配置用户名: git config --global user.name wooyeon

        配置邮箱:git config --global user.email ***

        保存用户名和密码:git config --global credential.helper store

        查看配置信息:git config --global --list

3. 创建仓库

1. 本地创建仓库:

        git init

        git init my-repo

2. 克隆远程仓库:git clone ***

4. 工作区域

1. 工作区-->git add --> 暂存区 --> git commit --> 本地仓库

2. 基本命令

2.1 创建仓库

        git init my-repo

2.2 查看状态以及处于哪个分支
        git status 

2.3 添加到暂存区
        git add file1.txt # 添加到暂存区
        git add *.txt # 添加所有txt文件到暂存区
        git add . # 添加所有文件到暂存区

2.4 提交到仓库
        git commit -m "第一次提交" # 提交到仓库

2.5 查看提交历史信息(提交记录)
        git log
        git log --oneline # 查看简洁的提交信息

2.6 回退到某个版本
        git reset --soft 版本id # 回退到某个版本,并保留工作区和暂存区的内容
        git reset --hard 版本id # 回退到某个版本,工作区和暂存区均不保留
        git reset --mixed 版本id # 回退到某个版本,只保留工作区内容,不保留缓存区内容。(默认)

2.7 在执行完回退后,可以查看暂存区和工作区内容
        ls # 工作区
        git ls-files # 查看暂存区、版本库中的内容

2.8 出现误操作,具体操作:

        先查看操作的历史记录
                git reflog
        回退到历史版本即可
                git reset --hard 版本id

2.9 查看工作区、暂存区、本地仓库之间的差异。不同版本之间的差异。不同分支之间的差异
        git diff # 默认比较工作区与缓存区间的差异

        git diff HEAD  # 比较工作区与版本仓库中的差异

        git diff --cached # 比较缓存区和版本库中的差异

        

        git diff 版本id 版本id # 比较两个版本之间的差异

        git diff 版本id HEAD # 比较最新提交与固定版本之间的差异

        git diff HEAD~ HEAD # 比较最新版本和上一个版本之间的差异

        git diff HEAD~2 HEAD # 比较最新版本和退两个的版本的差异

        git diff HEAD~2 HEAD file1.txt # 比较最新版本和退两个的版本中file1文件的差异        

2.10 从版本库中删除文件

        1. 先手动删除工作区的文件,然后使用git add . 更新缓存区,再git commit。

        2. 简单方式

                git rm file1.txt # 在版本库中删除了该文件,在版本库、工作区和缓存区都会删除

                git commit -m "delete file1.txt" # 必须要进行提交

                 

                git rm --cached fil1.txt # 只在版本库中进行删除,工作区还是存在

2.11 忽略文件.gitignore文件。该文件中的内容不会上传的版本库中。(不上传该文件夹中设置的内容)

2.12 远程仓库,使用SSH进行链接。

        1. 从远程克隆到本地: git clone ssh***       

        2. 关联本地仓库和远程仓库:先在github创建一个仓库再进行关联。

        git remote add origin https://github.com/wooyeonicon/my-repo.git # 关联
        git remote -v # 查看当前仓库对应的远程仓库的别名和地址
        git branch -M main # 指定分支为main
        git push -u origin main # 将当前仓库的main分支和远程仓库的main分支关联起来

                注意:在关联时需要输入Username和Password,在setting里设置token.

​​​​​​​        3. 关联后,远程仓库中有修改,需要进行拉取

                git pull origin main # 将远程仓库的main分支,拉取到本地仓库。(使用pull时,还会自动对本地仓库和远程仓库的内容进行合并;fetch则不会自动合并,只拉去远程仓库内容)

2.13 分支 

        1. 查看当前仓库的所有分支

                git branch

        2. 创建新分支

                git branch dev # 创建dev分支

        3. 切换到dev分支上

                git checkout dev # 不建议使用,如果分支名和文件名相同,在切换到某个文件修改前的状态有歧义

                git switch main # 切换到main分支

        4. 合并分支:将dev分支上的内容合并到主分支main

                首先切换到main分支。git merge dev # 合并到主分支。:wq进行保存。

        5. 查看详细分支图

                git log --graph --oneline --decorate --all

        6. 删除合并后的dev分支

                git branch -d dev # dev分支已经合并到其他分支,采用该命令进行删除。

                git branch -D dev # dev分支如果没有被其他分支合并,需要强制进行删除。

        7. 解决合并分支冲突

                如果两个分支对同一个文件内容进行修改,在合并分支时会出现冲突问题。例如:

                        1. main分支(main1.txt)。

                        2. git switch feat # 创建feat分支

                        3. vi main1.txt (修改内容)# feat分支上修改main1.txt文件内容。

                        4. git commit -a -m "feat:1" # 在feat分支上添加并提交main1.txt。

                        5. git switch main # 切换到主分支

                        6. vi main1.txt # main分支下修改内容。(注意:在修改前,打开的时候,并不是feat分支修改后的内容,是原来main分支创建的main1.txt的内容)

                        7. git commit -am "main:1" # 可以是-am

                        8. git merge feat # 报错

                        9. git status # 查看冲突文件

                        10. git diff. # 查看冲突具体内容

                        11. vi main1.txt # 编辑,将需要的内容进行保留

                        12. git commit -am "merge conflict". # 进行添加并提交即可

                        13. 中止合并:git merge --abort

2.14 变基(合并):最终会形成一条线

        1. 将dev分支变基到main分支

                git switch dev

                git rebase main

        2. 将main分支上部分变基到dev分支上

                git switch main

                git rebase dev

        注意:前两种不同方式最终会有所不同。        

       


http://www.kler.cn/a/402858.html

相关文章:

  • 论文阅读——Intrusion detection systems using longshort‑term memory (LSTM)
  • 力扣2388. 将表中的空值更改为前一个值
  • DataGear 企业版 1.3.0 发布,数据可视化分析平台
  • Oracle - 多区间按权重取值逻辑 ,分时区-多层级-取配置方案(二)
  • 【自用】常用希腊字母表
  • (附项目源码)Java开发语言,219 ssm律师事务所业务管理系统的设计与实现,计算机毕设程序开发+文案(LW+PPT)
  • 【Linux】基础02
  • CommonsBeanutils与Shiro发序列化利用的学习
  • Python毕业设计选题:基于python的豆瓣电影数据分析可视化系统-flask+spider
  • React Native 全栈开发实战班 - 网络与数据之 websock与服务端交互
  • Ansible一键部署Kubernetes集群
  • 2024一带一路暨金砖国家技能发展与技术创新大赛第二届企业信息系统安全赛项选拔赛(北部赛区)
  • react 如何修改弹出的modal的标题
  • 知从科技加入SOAFEE组织,携手推动汽车软件创新
  • k8s 学习笔记之 k8s 存储管理
  • 人工智能与SEO优化中的关键词策略解析
  • uniapp vue3小程序报错Cannot read property ‘__route__‘ of undefined
  • 在ubuntu下,使用Python画图,无法显示中文怎么解决
  • Linux编辑器 - vim
  • C++继承与多态之继承
  • GDPU Vue前端框架开发 单文件组件
  • C++语言之类与对象1
  • 动态IP黑白名单过滤的设计与实现(下篇原理实现)
  • 11.20 深度学习-pytorch包和属性的基础语法
  • slf4j 基于 logback 单独打印性能日志到另外一个文件
  • ubuntu下怎么设置机器程序开机自启?