git分布式版本控制系统及在码云上创建项目并pull和push

一、分支概念

每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止

到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。

HEAD 严格来说不是指向提交,而是指向master,而 master才是指向提交

的,所以,HEAD指向的就是当前分支。

开始的时候,master分支是一条线,Git 用 master 指向最新的提交,再用

HEAD指向 master,就能确定当前分支,以及当前分支的提交点。每次提

交,master分支都会向前移动一步,这样,随着你不断提交,master分支

的线也越来越长。

二、创建分支过程

1、git仓库的建立

root@git \~\]# yum search git\|grep git.x86 \[root@git \~\]# yum -y install git \[root@git \~\]# rpm -qa\|grep git git-1.8.3.1-25.el7_9.x86_64 linux-firmware-20180220-62.git6d51311.el7.noarch crontabs-1.11-6.20121102git.el7.noarch \[root@git \~\]# rpm -ql git 1)创建一个空目录,使用git指令一定要cd到初始化之后的目录,init命令初始 化 \[root@git \~\]# mkdir /yy000 2)进入这个目录 \[root@git \~\]# cd /yy000/ 3)执行git init 指令 \[root@git yy000\]# git init # 初始化工作区(yy000)和仓库(.git) 初始化空的 Git 版本库于 /yy000/.git/ 4)发现隐藏目录.git \[root@git yy000\]# ls -a . .. .git \[root@git yy000\]# cd .git/ \[root@git .git\]# ls branches description hooks objects config HEAD info refs \[root@git .git\]# cd .. \[root@git yy000\]# vim Test.java public class Test{ public static void main(String \[\] args){ System.out.println("hello world"); } } \[root@git yy000\]# git log fatal: bad default revision 'HEAD' 2、常用指令: 格式:git add .\|文件名 # 将修改的文件提交的暂存区域 git commit -m "说明" 将暂存区的数据保存到仓库 git log 查看提交日志 \[root@git yy000\]# git config --global user.name caizijuan # 放进仓库 \[root@git yy000\]# git config --global user.email [[email protected]](mailto:[email protected]) \[root@git yy000\]# echo "//这是一行java注释,不会被编译,能提高文件的可读 性" \> Test.java # 修改Test.java文件,添加一行注释 \[root@git yy000\]# cat Test.java //这是一行java注释,不会被编译,能提高文件的可读性 \[root@git yy000\]# git log commit 7685d39974154b97bb156ca51d3da0beb0650266 Author: caizijuan \<[email protected]\> Date: Thu Jul 25 10:48:07 2024 +0800 新建了一个Test..java文件,这是新建的 \[root@git yy000\]# git add . # add后面加.表示当前目录所有文件 \[root@git yy000\]# git commit -m "这是第二次提交项目"\[master dc3c99e\] 这是第 二次提交项目 1 file changed, 1 insertion(+), 5 deletions(-) \[root@git yy000\]# echo "//又加了一个注释" \>\> Test.java \[root@git yy000\]# cat Test.java //这是一行java注释,不会被编译,能提高文件的可读性 //又加了一个注释 \[root@git yy000\]# git log # 没有commit就不会产生日志 \[root@git yy000\]# git add . \[root@git yy000\]# git commit -m "将缓存中的内容提交 到仓库" # -m:会调用 终端的注释 \[root@git yy000\]# git log # 新增了 \[root@git yy000\]# echo "//再次添加注释" \>\> Test.java\[root@git yy000\]# cat Test.java //这是一行java注释,不会被编译,能提高文件的可读性 //又加了一个注释 //再次添加注释 \[root@git yy000\]# git add . \[root@git yy000\]# git commit -m "在提交仓库的同时也为自己创建了一个还原点" \[root@git yy000\]# git branch # 查看当前仓库的分支 \* master 3、分支:(意义:让一个项目有多重可能性) 1)分支的创建 git branch 新分支名称 2)切换分支 git checkout 分支名称 git checkout -b新分支名称 //创建的同时进行切换 3)删除分支,要求是分支已经合并 git branch -d 分支名 git branch -D 分支名 //强制删除 \[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 -d dbranch \[root@git yy000\]# git branch \* master # 当前只有一个主分支,工作完成后,其他分支都会合并到主分支 4)查看分支 git branch 有几行,就有几个分支,\*标注当前所在的分支 git branch git status 5)分支合并 git merge分支名称 git checkout abranch //切换到a分支 git merge bbranch //在a分支下合并b分支 6)分支冲突(将两个分支合并时产生的) # 产生的原因:合并的时候有可能出现在文件冲突,即主分支或其他分支都修了 这个文件,此时合并时不知道以哪个分支为主 # 解决:手动修改一部分,只保留主分支修改的内容再提交 \[root@git yy000\]# git add Test.java # git add表示添加缓存 \[root@git yy000\]# git commit -m "新建了一个Test..java文件,这是新建的" # 创建newbranch分支,修改内容 \[root@git yy000\]# echo "//我是主分支 ,我修改了文件" \> Test.java \[root@git yy000\]# git checkout -b newbranch \[root@git yy000\]# git branch master \* newbranch \[root@git yy000\]# cat Test.java //我是主分支 ,我修改了文件 \[root@git yy000\]# echo "//我是newbranch分支" \> \> Test.java \[root@git yy000\]# cat Test.java //我是主分支 ,我修改了文件 //我是newbranch分支 \[root@git yy000\]# git checkout newbranch \[root@git yy000\]# git status # 位于分支 newbranch \[root@git yy000\]# git add . \[root@git yy000\]# git commit -m "abcd" # 回到主分支修改内容 \[root@git yy000\]# git checkout master \[root@git yy000\]# cat Test.java # 发现内容并未改变 \[root@git yy000\]# echo "eft" \>\> Test.java \[root@git yy000\]# git add . \[root@git yy000\]# git commit -m "mntyuo" \[root@git yy000\]# git branch \* master newbranch # 将newbranch合并到主分支 \[root@git yy000\]# git merge newbranch 自动合并 Test.java 冲突(内容):合并冲突于 Test.java 自动合并失败,修正冲突然后提交修正的结果。 \[root@git yy000\]# cat Test.java \<\<\<\<\<\<\< HEAD //这是一行java注释,不会被编译,能提高文件的可读性 //又加了一个注释 //再次添加注释 // 我是a员工,我不骄傲 我是b员工 eft ======= //我是主分支 ,我修改 了文件 //我是newbranch分支 \>\>\>\>\>\>\> newbranch # 解决:手动修改一部分,只保留主分支修改的内容再提交 \[root@git yy000\]# vim Test.java 我是b员工 eft \[root@git yy000\]# git add . \[root@git yy000\]# git commit -m "合并修正" \[master b1f3f55\] 合并修正 \[root@git yy000\]# git log ****项目实战**** 需求:abc三人实现一个接口Test.java,但一个文件在同一时间只能被一个用户 编辑。 1. 切换到master分支 格式:git branch 分支名称 git checkout -b 分支名称 //分支的同时创建分 支 \[root@git yy000\]# git checkout master 已经位于 'master' \[root@git yy000\]# ls Test.java \[root@git yy000\]# cat Test.java //这是一行java注释,不会被编译,能提高文件的可读性 //又加了一个注释 //再次添加注释 2、创建分支 abranch \[root@git yy000\]# git branch abranch \[root@git yy000\]# git branch # 查看当前所在的分支及总分支 abranch \* master 3、切换分支 'abranch' \[root@git yy000\]# git checkout abranch 切换到分支 'abranch' \[root@git yy000\]# git branch \* abranch master \[root@git yy000\]# cat Test.java //这是一行java注释,不会被编译,能提高文件的可读性 //又加了一个注释 //再次添加注释 4、添加内容 \[root@git yy000\]# echo "// 我是a员工,我不骄傲" \>\> Test.java \[root@git yy000\]# cat Test.java //这是一行java注释,不会被编译,能提高文件的可读性 //又加了一个注释 //再次添加注释 // 我是a员工,我不骄傲 \[root@git yy000\]# git add . \[root@git yy000\]# git commit -m "a员工提交的内容" \[root@git yy000\]# git branch # 主分支 abranch \* master \[root@git yy000\]# cat Test.java # 没有此行(// 我是a员工,我不骄傲 ) \[root@git yy000\]# git checkout -b bbranch 切换到一个新分支 'bbranch' \[root@git yy000\]# git branch abranch \* bbranch master \[root@git yy000\]# cat Test.java //这是一行java注释,不会被编译,能提高文件的可读性 //又加了一个注释 //再次添加注释 // 我是a员工,我不骄傲 \[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 //这是一行java注释,不会被编译,能提高文件的可读性 //又加了一个注释 //再次添加注释 // 我是a员工,我不骄傲 我是b员工 5、测试 \[root@git yy000\]#mkdir abc \[root@git yy000\]#touch efg \[root@git yy000\]#git add abc/ \[root@git yy000\]#git commmit -m "更新一个目录" \[root@git yy000\]#git add efg \[root@git yy000\]#git commmit -m "新增了一个efg目录" \[root@git yy000\]#git add . \[root@git yy000\]#git commmit -m "所有文件都提交" ****git拉取**** 环境准备 两台主机:git(192.168.2.27) lq(192.168.2.28) 1、安装git \[root@lq \~\]# yum -y install git 2、作免密,连接到git主机 \[root@lq \~\]# ssh-keygen \[root@lq \~\]# ssh-copy-id [email protected] \[root@lq \~\]# ssh [email protected] Last login: Thu Jul 25 14:02:56 2024 from 192.168.2.88 \[root@git \~\]# 3、复制git主机上的资料 \[root@lq \~\]# git clone 192.168.2.27:/yy000/.git \[root@lq \~\]# ls anaconda-ks.cfg soft yy000 \[root@lq \~\]# cd yy000/ \[root@lq yy000\]# ls efg Test.java \[root@lq yy000\]# ls -a # 查看隐藏文件 . .. efg .git Test.java 4、设置自己的姓名和邮箱并修改内容 \[root@lq yy000\]# git pull # 获取更新的内容 Already up-to-date. \[root@lq yy000\]# git config --global user.name aaa \[root@lq yy000\]# git config --global user.email [email protected] \[root@lq yy000\]# touch A.class \[root@lq yy000\]# git add . \[root@lq yy000\]# git commit -m "mnt" ****在码云上创建项目并pull和push**** ![](https://i-blog.csdnimg.cn/direct/62cf1c1779554bedb459d3a731148af9.png) 仓库初始化 ![](https://i-blog.csdnimg.cn/direct/84222dda33844126a09c6d9a900b5c0a.png) \[root@lq \~\]# git clone https://gitee.com/cai-zijuan/huajuan.git \[root@lq \~\]# cd huajuan/ \[root@lq huajuan\]# \[root@lq huajuan\]# ls README.en.md README.md \[root@lq huajuan\]# mkdir -p src/main/java/ \[root@lq huajuan\]# ls README.en.md README.md src \[root@lq huajuan\]# touch src/main/java/Test.java \[root@lq huajuan\]# tree src/ src/ └── main └── java └── Test.java \[root@lq huajuan\]# git add . \[root@lq huajuan\]# git commit -m "文件提交" \[root@lq huajuan\]# git push # 输入账号和密码 \[root@lq huajuan\]# vim src/main/java/Test.java public class Test{ public static void main(String \[\] args){ System.out.println("i shi ceshi test"); } } \[root@lq huajuan\]# git add . \[root@lq huajuan\]# git commit -m "做测试" \[root@lq huajuan\]# git pull # 查看最新的及被修改过的

相关推荐
Red丶哞5 小时前
Stitching Together Multiple Input and Output Plugins
elasticsearch
Naomi5219 小时前
自定义汇编语言(Custom Assembly Language) 和 Unix & Git
服务器·开发语言·git·unix
计算机毕设定制辅导-无忧学长10 小时前
TDengine 权限管理与安全配置实战(二)
大数据·安全·tdengine
2401_8979300611 小时前
Kibana 连接 Elasticsearch(8.11.3)教程
大数据·elasticsearch·jenkins
计算机毕设定制辅导-无忧学长11 小时前
TDengine 快速上手:安装部署与基础 SQL 实践(一)
大数据·sql·tdengine
@BreCaspian11 小时前
Git 从入门到精通(开源协作特别版)
git·开源
塔能物联运维11 小时前
塔能科技:精准节能,擎动工厂可持续发展巨轮
大数据·运维
今天我又学废了12 小时前
Spark,HDFS概述
大数据·hdfs·spark
青云交12 小时前
Java 大视界 -- 基于 Java 的大数据机器学习模型在图像识别中的迁移学习与模型优化(173)
大数据·迁移学习·图像识别·模型优化·deeplearning4j·机器学习模型·java 大数据
谢尔登13 小时前
【已解决】Webstorm 每次使用 git pull/push 都要输入令牌/密码登录
ide·git·webstorm