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 [19119921829@163.com](mailto:19119921829@163.com) \[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 \<19119921829@163.com\> 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 root@192.168.2.27 \[root@lq \~\]# ssh root@192.168.2.27 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 juan@163.com \[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 # 查看最新的及被修改过的

相关推荐
210Brian42 分钟前
嘉立创EDA硬件设计与实战学习笔记(二):元件符号与封装的绘制
大数据·笔记·学习
苦瓜小生1 小时前
【Git】| 将拉下来的代码上传到自己的 Gitee 仓库(手把手教学)
git·gitee
历程里程碑1 小时前
Proto3 三大高级类型:Any、Oneof、Map 灵活解决复杂业务场景
java·大数据·开发语言·数据结构·elasticsearch·链表·搜索引擎
WKP94181 小时前
git的merge和rebase操作
git
第二只羽毛1 小时前
IO代码解释3
java·大数据·开发语言
wanhengidc2 小时前
云手机与模拟器的关系
大数据·运维·服务器·分布式·智能手机
网络工程小王2 小时前
【Python数据分析基础】
大数据·数据库·人工智能·学习
方向研究3 小时前
尼龙66生产
大数据
Hello.Reader3 小时前
Pandas API on Spark 快速入门像写 Pandas 一样使用 Spark
大数据·spark·pandas
江瀚视野3 小时前
美丽田园经调净利大增41%,全方位增长未来何在?
大数据·人工智能