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

【无标题】Git(仓库,分支,分支冲突)

Git

一种分布式版本控制系统,用于跟踪和管理代码的变更

一.Git的主要功能:

二.准备git机器

修改静态ip,主机名

三.git仓库的建立:

1.安装git

[root@git ~]# yum -y install git

2.创建一个目录----用来放置git文件

[root@git ~]# mkdir /yy000

3.使用git指令,一定要cd到初始化之后的目录

cd到yy000目录中使用init指令初始化

[root@git ~]# mkdir /yy000

[root@git ~]# cd /yy000/

[root@git yy000]# ls

[root@git yy000]# git init  //将我们当前的目录变成一个工作区

4.初始化空的 Git 版本库于 /yy000/.git/

[root@git yy000]# vim Test.java  //添加一个文件

[root@git yy000]# ls

Test.java

5.[root@git yy000]# git add Test.java   //将Test.java放到缓存里面

6.[root@git yy000]# git commit -m "新建了一个Test.java文件,这是新建的"   //提交放到仓库里面

7.创建用户及邮箱

[root@git yy000]# git config --global user.name tjj

[root@git yy000]# git config --global user.email 3490805063@qq.com

8.修改Test.java文件,添加一行注释

[root@git yy000]# echo "//这是一行jav注释,不会被编译,能提交 文件的可读性" >Test.java

[root@git yy000]# git log  //查看日志

[root@git yy000]# git commit -m "这是第二次提交"

[root@git yy000]# git log

[root@git yy000]# echo "//我又加了一个注释" >> Test.java

[root@git yy000]# git add .

[root@git yy000]# git commit -m "将缓存中的内容提交到仓库"

[root@git yy000]# git log

四.git的基本流程

五.分支

1.查看当前仓库的分支

[root@git yy000]# git branch

* master   //当前只有一个master主分支,当工作完成后,其他的分支都会合并到主分支

要求abc三个人实现一个接口

一个文件在同一时间只能被一个用户编辑

2.格式:

创建分支

git branch 分支名称

git checkout -b 分支名称

跳转分支

git checkout 分支名称

删除分支(两个分支合并的情况下)

git branch -d 分支名

强制删除分支(即使该分 支尚未合并),可以使用以下命令

git branch -D 分支名

合并分支

git merge 分支名称

3.例子:

(1)[root@git yy000]# git branch abranch  //创建分支

[root@git yy000]# git branch   //查看分支

  abranch

* master

(2)切换到abranch分支上

[root@git yy000]# git checkout abranch

切换到分支 'abranch'

[root@git yy000]# git branch

* abranch

  master

[root@git yy000]# ls

Test.java

(3)[root@git yy000]# echo "我睡觉哦" >> Test.java  //写入内容并追加到Test.java文件中

[root@git yy000]# cat Test.java

(4)[root@git yy000]# git add .  //将分支写的内容提交到缓存

(5)[root@git yy000]# git commit -m "我提交的"  //提交新分支并注释为“我提交的”

[root@git yy000]# git checkout master

切换到分支 'master'

[root@git yy000]# git branch

  abranch

* master

[root@git yy000]# cat Test.java

刚才写入的内容没有了,是因为之前是在其他分支上操作的,并非在master

所以切换回master后,显示的内容只会是master分支上的内容

[root@git yy000]# git checkout -b bbranch   //-b在切换分支的同时创建分支

切换到一个新分支 'bbranch'

[root@git yy000]# git branch

  abranch

* bbranch

  master

[root@git yy000]# cat Test.java

[root@git yy000]# echo "我是b" >> Test.java

[root@git yy000]# git branch

  abranch

* bbranch

  master

[root@git yy000]# git  checkout abranch

M       Test.java

切换到分支 'abranch'

[root@git yy000]# cat Test.java

这两个分支可以共享

[root@git yy000]# git commit -m "aaa"

[root@git yy000]# git  checkout master

[root@git yy000]# mkdir abc

[root@git yy000]# ls

abc  Test.java

[root@git yy000]# touch efg

[root@git yy000]# git add abc/

[root@git yy000]# git commit -m "更像一个目录"

# 位于分支 master

# 未跟踪的文件:

#   (使用 "git add <file>..." 以包含要提交的内容)

#

#       efg

提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

[root@git yy000]# git add efg

[root@git yy000]# git commit -m "新增了一个efg"

[master 6386f17] 新增了一个efg

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 efg

[root@git yy000]# git add .

[root@git yy000]# git commit -m "所有都提交"

当代码任务完成后,需要将更改合并回主分支。首先,切换回主分支

[root@git yy000]# git  checkout master

[root@git yy000]# git merge abranch  //在master里面把a修改的合并到master

[root@git yy000]# git log

删除分支(合并的情况下)

[root@git yy000]# git branch -d abranch  

[root@git yy000]# git branch -d bbranch  

[root@git yy000]# git branch -d cbranch  

[root@git yy000]# git branch

* master

六.分支冲突:

在合并的时候,有可能出现文件冲突(主分支修改了文件,zhangsan分支也修改了这个文件,两个分支都发生了修改,合并的时候,就不清楚以哪个分支为主,产生冲突)

手动解决:

[root@git yy000]# echo "//我是主分支" > Test.java

[root@git yy000]# git checkout -b newbranch

[root@git yy000]# echo "//我是nerbranch分支" >> Test.java

[root@git yy000]# git add .

[root@git yy000]# git commit -m "abcd"

[newbranch e71525b] abcd

 1 file changed, 2 insertions(+), 4 deletions(-)

[root@git yy000]# git checkout master

切换到分支 'master'

[root@git yy000]# cat Test.java

//这是一行jav注释,不会被编译,能提交文件的可读性

//我又加了一个注释

我睡觉哦

我是b

[root@git yy000]# echo "sdsdwsdew" > Test.java

[root@git yy000]# git add .

现在两个分支都有修改要将新分支合并到主分支

[root@git yy000]# git commit -m "cjdsbvdj"

修改Test.java文件

[root@git yy000]# vim Test.java

[root@git yy000]# git commit -m "cjdsbvdj"  //再次合并

[root@git yy000]# git log

git拉取:

再启动一台主机

安装git

Yum -y install git

做一个免密登录到git主机上

ssh-keygen

ssh-copy-id root@192.168.2.30

克隆192.168.2.30上的资料

[root@git1 ~]# git clone 192.168.2.30:/yy000/.git/

修改内容

设置自己的姓名和邮箱

[root@git1 yy000]# git config --global user.name aaa

[root@git1 yy000]# git config --global user.email aaa@163.com

修改内容

[root@git1 yy000]# touch A.class

[root@git1 yy000]# git add .

[root@git1 yy000]# git commit -m "aaaa"

第一次使用对方的项目  git clone

七.在码云上创建项目

[root@git1 ~]# git clone smt: 用于仓库部署

[root@git1 ~]# cd smt/

[root@git1 smt]# ls

README.en.md  README.md

[root@git1 smt]# mkdir -p src/main/java/

[root@git1 smt]# ls

README.en.md  README.md  src

[root@git1 smt]# touch src/main/java/Test.java

[root@git1 smt]# git add .

[root@git1 smt]# vim src/main/java/Test.java

[root@git1 smt]# vim src/main/java/Test.java

[root@git1 smt]# git add .

[root@git1 smt]# git commit -m “水蜜桃"

[root@git1 smt]# git push

相关文章:

  • 寄生组合式继承
  • 什么是零拷贝
  • 内网对抗-隧道技术篇防火墙组策略HTTP反向SSH转发出网穿透CrossC2解决方案
  • asp.net core 集成redis详解
  • 数据挖掘-数据预处理
  • langchain 入门指南 - ReAct 模式
  • 微软全球蓝屏带来的思考及未来战争走向
  • 实验一 FPGA使用Verilog HDL设计选择器
  • 【数据结构】:大厂面试经典链表OJ题目详解
  • 【笔记-软考】层次式架构-表现层框架设计
  • 跨域浏览器解决前端跨域问题
  • 构建现代化农业产业服务平台的系统架构
  • Ruby、Python、Java 开发者必备:Codigger之软件项目体检
  • [数据集][目标检测]野猪检测数据集VOC+YOLO格式1000张1类别
  • Spring Security认证授权介绍
  • 2019.2.20 c++ 知识梳理
  • Android单元测试 - 几个重要问题
  • Docker下部署自己的LNMP工作环境
  • export和import的用法总结
  • Facebook AccountKit 接入的坑点
  • fetch 从初识到应用
  • JavaScript设计模式系列一:工厂模式
  • Java到底能干嘛?
  • MQ框架的比较
  • Node + FFmpeg 实现Canvas动画导出视频
  • PHP CLI应用的调试原理
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 从tcpdump抓包看TCP/IP协议
  • 读懂package.json -- 依赖管理
  • 多线程事务回滚
  • 排序算法学习笔记
  • 如何设计一个比特币钱包服务
  • 消息队列系列二(IOT中消息队列的应用)
  • 小程序测试方案初探
  • 一道闭包题引发的思考
  • 一些css基础学习笔记
  • 正则与JS中的正则
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 数据库巡检项
  • # include “ “ 和 # include < >两者的区别
  • (10)STL算法之搜索(二) 二分查找
  • (2022 CVPR) Unbiased Teacher v2
  • (4)(4.6) Triducer
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)mysql使用Navicat 导出和导入数据库
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ../depcomp: line 571: exec: g++: not found
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道