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

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.javaroot@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

仓库初始化

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 # 查看最新的及被修改过的

相关推荐
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
是宇写的啊10 小时前
Git远程操作
git
阿里云大数据AI技术12 小时前
更快、更稳、更省:揭秘阿里云 Elasticsearch 存算分离与弹性扩缩
elasticsearch
延凡科技12 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
ifenxi爱分析13 小时前
爱分析最新报告解读:AI数据基础设施与数据中台的区别
大数据·人工智能
阿里云大数据AI技术14 小时前
Search Lake:ES x Paimon 让湖上多模态数据可搜可用
人工智能·elasticsearch·搜索引擎
品牌全球行14 小时前
共商共建共享 链接数字未来——“一带一路数字新城(深圳)会客厅筹备办”揭牌仪式在深圳隆重举行
大数据·人工智能
数智化管理手记16 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
ApacheSeaTunnel17 小时前
Apache SeaTunnel AI CLI Benchmark:7 款大模型、100 个 ETL 任务实测,谁真正能跑起来?
大数据·ai·开源·大模型·数据集成·cli·seatunnel·技术分享·数据同步
电商API_1800790524717 小时前
企业ERP进销存场景|京东商品详情接口自动同步方案|凭证鉴权批量调用技术实操
大数据·运维·人工智能·爬虫·数据挖掘·网络爬虫