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

Linux架构篇、第五章_02git2.49.0分支管理与Gitee的部署

Linux_架构篇

欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神!

题目:分支管理与gitee

版本号: 1.0,0
作者: @老王要学习
日期: 2025.05.14
适用环境: Centos 7

文档说明

本文围绕 Git 操作展开,适用于 Centos7 环境。详细介绍创建、切换、合并、删除分支方法,阐述解决分支冲突的步骤,对比快进与非快进合并差异,还讲解通过 Git 将代码上传到 Gitee 公有仓库的全流程,助用户掌握 Git 分支管理技能

环境准备

硬件要求

  • 服务器: 2核CPU、2GB内存,20GB硬盘空间
  • 网络: 确保服务器具有固定的IP地址,并且防火墙允许FTP端口(默认22端口)的通信

软件要求

  • 操作系统:Centos7
  • FTP软件:SecureCRT
  • 软件包:git-2.49.0.tar.xz 与 git-manpages-2.49.0.tar.xz

一、创建、切换、合并、分支

1.1创建分支dev

# 创建一个新分支,并进入新分支
git checkout -b dev
#输出如下: 
Switched to a new branch 'dev'# 查看创建的Git分支
git branch
* devmaster# 添加内容
cat >>devtest.log<<EOF
> asdfg
> sdfgh
> EOF# 添加到缓存区
git add .# 提交缓存区
git commit  -m "add devtest"
#输出如下: 
[dev 3bd89ac] add devtest1 file changed, 2 insertions(+)create mode 100644 devtest.log# 查看状态
git status
#输出如下: 
On branch dev
nothing to commit, working tree clean#查看当前文件
ll
#输出如下: 
total 12
-rw-r--r-- 1 root root 12 May 13 02:47 devtest.log
-rw-r--r-- 1 root root 26 May 13 01:06 test2.txt
-rw-r--r-- 1 root root 16 May 13 00:54 test.txt

1.2切换分支

# 切换到master分支
git checkout master
#输出如下: 
Switched to branch 'master'#查看目录(发现没有察觉到devtest.log文件,因为它创建在dev分支中)
[root@git01 mygit]# ll
total 8
-rw-r--r-- 1 root root 26 May 13 01:06 test2.txt
-rw-r--r-- 1 root root 16 May 13 00:54 test.txt#我们在切换回dev分支
git checkout dev
#输出如下: 
Switched to branch 'dev'# 查看创建的文件是存在的
[root@git01 mygit]# ll
total 12
-rw-r--r-- 1 root root 12 May 13 03:36 devtest.log
-rw-r--r-- 1 root root 26 May 13 01:06 test2.txt
-rw-r--r-- 1 root root 16 May 13 00:54 test.txt

1.3合并分支

# 切换回主分支
git checkout  master
#输出如下: 
Switched to branch 'master'#合并master与dev分支
git merge dev
#输出如下: 
Updating 9116daf..3bd89ac
Fast-forwarddevtest.log | 2 ++1 file changed, 2 insertions(+)create mode 100644 devtest.log#查看当前目录(合并成功devtest.log文件显示)
[root@git01 mygit]# ll
total 12
-rw-r--r-- 1 root root 12 May 13 03:44 devtest.log
-rw-r--r-- 1 root root 26 May 13 01:06 test2.txt
-rw-r--r-- 1 root root 16 May 13 00:54 test.txt

1.4删除分支

# 删除dev分支(因dev数据已经合并到master,可以放心清除dev分支)
git branch  -d dev
#输出如下: 
Deleted branch dev (was 3bd89ac).# 查看当前分支
git branch 
#输出如下: 
* master

1.5小结

指令功能
git branch查看分支
git branch lw创建分支(lw)
git checkout lw切换分支(lw)
git checkout -b lw2创建并进入分支(lw2)
git merge lw合并lw到lw2
git branch -d lw删除分支(lw)

二、解决冲突

2.1创建分支(test1)

# 创建分支并进入
git checkout -b test1
#输出如下: 
Switched to a new branch 'test1'# 插入一行数据到test.txt
cat >>test.txt<<EOF
test1
EOF# 添加到缓存区
git add .# 提交缓存区git commit -m "modify test a"
#输出如下: 
[test1 b487be1] modify test a1 file changed, 1 insertion(+)# 查看状态
git status
#输出如下: 
On branch test1
nothing to commit, working tree clean

2.2进入master进行编辑

# 切换到master分支git checkout master#输出如下: 
Switched to branch 'master'# 插入一行数据到test.txt
cat >>test.txt<<EOF
master
EOF#添加到缓存区
git add .#提交缓存区
git commit  -m "add master line"
#输出如下: 
[master bc3a7c0] add master line1 file changed, 1 insertion(+)# 查看状态
git status
#输出如下: 
On branch master
nothing to commit, working tree clean

2.3在master合并test1

# 合并分支test1
git merge test1 
#输出如下: 
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.# 查看状态(报错)
git status
#输出如下: 
On branch master
You have unmerged paths.(fix conflicts and run "git commit")(use "git merge --abort" to abort the merge)Unmerged paths:(use "git add <file>..." to mark resolution)both modified:   test.txtno changes added to commit (use "git add" and/or "git commit -a")# 查看合并文件test(发现合并出现冲突)
cat test.txt 
a
b
c
d
e
f
6
7
<<<<<<< HEAD
master
=======
test1
>>>>>>> test1

2.4删除无用内容(由项目经理决定删除一个错误)

# 删除无用内容(选择保留master)
cat >test.txt<<EOF
a
b
c
d
e
f
6
7
master
EOF# 添加到缓存区git commit -m "fix test"#输出如下: 
[master da71908] fix test# 查看状态
git status
#输出如下: 
On branch master
nothing to commit, working tree clean

三、合并分支

3.1创建新的分支并写入内容

# 删除test1分支
git branch -d test1 
#输出如下: 
Deleted branch test1 (was b487be1).# 创建dev复制
git checkout -b dev
#输出如下: 
Switched to a new branch 'dev'#查看当前分支
git branch 
#输出如下: 
* devmaster#创建test3.txt写入数据
cat >>test3.txt<<EOF
a
EOF# 添加到缓存区
git add .#提交缓存区
git commit -m "add test3 a"
#输出如下: 
[dev 6b8f2d3] add test3 a1 file changed, 1 insertion(+)create mode 100644 test3.txt#接下来依次创建b,c,d,e
#b
cat >>test3.txt<<EOF
b
EOFgit add .git commit -m "add test3 b"# c
cat >>test3.txt<<EOF
c
EOFgit add .git commit -m "add test3 c"# d
cat >>test3.txt<<EOF
d
EOFgit add .git commit -m "add test3 d"# e
cat >>test3.txt<<EOF
e
EOFgit add .git commit -m "add test3 e"# 查看状态
git status
#输出如下: 
On branch dev
nothing to commit, working tree clean

3.2查看提交记录

git log --pretty=oneline 
#输出如下: 
b52c7dfe6da151077c12c7688873457fc0f0c088 (HEAD -> dev) add test3 e
4e0f8cbe2619e07db1d52f1b1944b188657f02d6 add test3 d
c59bbd795090fb2c5c4036bed221cd0a85a8af4a add test3 c
e31105f0b4ceeb71163fb424a122b41ae389cf09 add test3 b
6b8f2d3bd6437f1a22425c9c046e70cfb88daec6 add test3 a
da719081829f9651a920c080c3a5d487528db678 (master) fix test
bc3a7c0a36d221b742e012489afc4b2c09b37c21 add master line
b487be13dd3a6a6ce9a15ab2293e1e72b4fe240a modify test a
3bd89ac560bee76f95dd1e24b4b0f381aa717601 add devtest
9116dafeb08cad8f629bc37c9a73b3e71228e687 add test2
a2c2416c43d8ec55fb122057ccffc0dee8b4ce83 remove test1.txt
d7f2588b3941ca00305462a6a2a9f1c54bb57ce0 add test1
5cfad3e86b26d22fcc991855c9c463627918bc57 add ?
fb27eaab5e47f7ac07fd6ab7f11369476a369b6a add test file

3.3合并分支(快进合并)

# 切换master分支
git checkout master 
#输出如下: 
Switched to branch 'master'# 查看状态
git status
#输出如下: 
On branch master
nothing to commit, working tree clean# 合并分支dev
git merge dev 
#输出如下: 
Updating da71908..b52c7df
Fast-forwardtest3.txt | 5 +++++1 file changed, 5 insertions(+)create mode 100644 test3.txt

3.4查看合并日志

#查看合并日志(发现信息的丢失,但数据没有丢失)
git log --graph --pretty=oneline 
#输出如下: 
* b52c7dfe6da151077c12c7688873457fc0f0c088 (HEAD -> master, dev) add test3 e
* 4e0f8cbe2619e07db1d52f1b1944b188657f02d6 add test3 d
* c59bbd795090fb2c5c4036bed221cd0a85a8af4a add test3 c
* e31105f0b4ceeb71163fb424a122b41ae389cf09 add test3 b
* 6b8f2d3bd6437f1a22425c9c046e70cfb88daec6 add test3 a
*   da719081829f9651a920c080c3a5d487528db678 fix test
|\  
| * b487be13dd3a6a6ce9a15ab2293e1e72b4fe240a modify test a
* | bc3a7c0a36d221b742e012489afc4b2c09b37c21 add master line
|/  
* 3bd89ac560bee76f95dd1e24b4b0f381aa717601 add devtest
* 9116dafeb08cad8f629bc37c9a73b3e71228e687 add test2
* a2c2416c43d8ec55fb122057ccffc0dee8b4ce83 remove test1.txt
* d7f2588b3941ca00305462a6a2a9f1c54bb57ce0 add test1
* 5cfad3e86b26d22fcc991855c9c463627918bc57 add ?
* fb27eaab5e47f7ac07fd6ab7f11369476a369b6a add test file

3.5创建新的分支(进行不快进合并)

# 删除dev分支
git branch -d dev 
#输出如下: 
Deleted branch dev (was b52c7df).#创建新分支并进入(test)
#输出如下: 
git checkout  -b test
Switched to a new branch 'test'#写入数据
cat >>testbranch.test<<EOF
> a
> EOF# 添加到缓存区
git add .# 提交缓存区
git commit -m "test a line"
#输出如下: 
[test 3c63831] test a line1 file changed, 1 insertion(+)create mode 100644 testbranch.test#接下来还是创建b,c,d,e
cat >>testbranch.test<<EOF
b
EOFgit add .git commit -m "add test b"# c
cat >>testbranch.test<<EOF
c
EOFgit add .git commit -m "add test c"# d
cat >>testbranch.test<<EOF
d
EOFgit add .git commit -m "add test d"# e
cat >>testbranch.test<<EOF
e
EOFgit add .git commit -m "add test e"# 查看状态
git status
#输出如下: 
On branch test
nothing to commit, working tree clean

3.6合并分支(不快进合并)

git checkout master 
Switched to branch 'master'
git merge --no-ff -m "merge test branch" test 
#输出如下: 
Merge made by the 'ort' strategy.testbranch.test | 5 +++++1 file changed, 5 insertions(+)create mode 100644 testbranch.test

3.7再次查看合并日志(不快进合并)

git log --graph --pretty=oneline 
#输出如下: 
*   ad1af6b8943afeef39d7030e4ff219d4549e61d7 (HEAD -> master) merge test branch
|\  
| * ef5f6b9310b02f88276f85b98f98112d09f59111 (test) add test e
| * 2c3a8cfd62b0869e10599cf6ff1579fcfbcc715b add test d
| * c009798567a210c1cadfb62acbd345fe7ca43450 add test c
| * 35a60b09c431e09d398a4c23ec1ee6cdb553eac3 add test b
| * 3c63831f61d814b8c0bbb0f980f45c844341d33b test a line
|/  
* b52c7dfe6da151077c12c7688873457fc0f0c088 add test3 e
* 4e0f8cbe2619e07db1d52f1b1944b188657f02d6 add test3 d
* c59bbd795090fb2c5c4036bed221cd0a85a8af4a add test3 c
* e31105f0b4ceeb71163fb424a122b41ae389cf09 add test3 b
* 6b8f2d3bd6437f1a22425c9c046e70cfb88daec6 add test3 a
*   da719081829f9651a920c080c3a5d487528db678 fix test
|\  
| * b487be13dd3a6a6ce9a15ab2293e1e72b4fe240a modify test a
* | bc3a7c0a36d221b742e012489afc4b2c09b37c21 add master line
|/  
* 3bd89ac560bee76f95dd1e24b4b0f381aa717601 add devtest
* 9116dafeb08cad8f629bc37c9a73b3e71228e687 add test2
* a2c2416c43d8ec55fb122057ccffc0dee8b4ce83 remove test1.txt
* d7f2588b3941ca00305462a6a2a9f1c54bb57ce0 add test1
* 5cfad3e86b26d22fcc991855c9c463627918bc57 add ?
* fb27eaab5e47f7ac07fd6ab7f11369476a369b6a add test file

四、通过git上传代码到gitee(公有仓库)

官网地址:https://gitee.com/

首先进入先创建账号,在进行如下步骤:

4.1创建新的仓库

![[Pasted image 20250514102514.png]]

![[Pasted image 20250514102918.png]]

4.2生成公钥进行上传

# 生成公钥
ssh-keygen -t rsa
#输出如下: 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0Uba4UBbprdBbDwDpMr9SkctomVfnN6JQLEomtf/CEE root@git01
The key's randomart image is:
+---[RSA 2048]----+
|       o*+*      |
|       o /*.     |
|    . E B.Bo     |
|   + * . * +     |
|  o + B S *      |
|   . + B = o .   |
|    . o = o o    |
|     . + o       |
|      . . .      |
+----[SHA256]-----+#查看公钥段(进行上传)
cat /root/.ssh/id_rsa.pub 
#输出如下: 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+peONJ63yFzsBBsZ6Pd+NDlBl91cE+Vd3P5JtYhLw/EwKIMpe6gpvGlJZwTkAdW0BE/HyVj7miibgspn/imhSfXRpj0ZvohVXaLFn7FNsYjyhiKSY0mHT/um/FM1wekwWILcBdRMYPkBgL9t0nGfgoROWsCGHgNAlRh+FT1lCQJmID/Vxq4G4j1bvxw2IMfA8lEzPTLzFkhwwFTfMs+nh09CsIA0QL2I5AQaGNJ2Vy/eWV1hlLIDHzYaAX3eiO56oifMXbB7zBJA2qSGzCsKxSNIRJ0d9ogLXCzi4PfC2K8afcb2UzCEMMSWEmUzkuZIsVMMDf8TTELvGFrx9ulOD root@git01

4.3上传gitee公钥步骤

![[Pasted image 20250514103749.png]]

![[Pasted image 20250514103848.png]]

![[Pasted image 20250514103907.png]]

![[Pasted image 20250514104056.png]]

4.4创建 git 仓库

![[Pasted image 20250514104138.png]]

![[Pasted image 20250514105029.png]]

# 创建仓库并进入
mkdir laowang250514_learning
cd laowang250514_learning#初始化一个新仓库
git init
#输出如下: 
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:   git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint:   git branch -m <name>
Initialized empty Git repository in /root/laowang250514_learning/.git/

4.4写入文件

# 在仓库自定义写入一个文件
echo "今天天气不错" >> laowang.txt# 添加到缓存区
git add laowang.txt# 提交缓存区
git commit -m "first commit"
#输出如下: 
[master (root-commit) 40981dd] first commit1 file changed, 1 insertion(+)create mode 100644 laowang.txt

4.5添加并推送

# 添加远程仓库
git remote add origin git@gitee.com:laowang_Star/laowang250514_learning.git#推送本地分支到远程
git push -u origin "master"
#输出如下: 
The authenticity of host 'gitee.com (180.76.198.225)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
ECDSA key fingerprint is MD5:27:e5:d3:f7:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,180.76.198.225' (ECDSA) to the list of known hosts.
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 224 bytes | 224.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 9d434093
To gitee.com:laowang_Star/laowang250514_learning.git* [new branch]      master -> master
branch 'master' set up to track 'origin/master'.

![[Pasted image 20250514110209.png]]

相关文章:

  • 《实现模式》以Golang视角解读 价值观和原则 day 1
  • 【PSINS工具箱】基于工具箱的单独GNSS导航、单独INS导航、两者结合组合导航,三种导航的对比程序。附完整的代码
  • 计算机网络:什么是计算机网络?它的定义和组成是什么?
  • 记录一次git提交失败解决方案
  • 模糊数学方法之模糊贴近度
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- OpenAI AGI 五阶段
  • 实验六:按键模拟控制实现
  • 浏览器相关
  • FPGA: Xilinx Kintex 7实现PCIe接口
  • 几种运放典型应用电路
  • OracleLinux7.9-ssh问题
  • Windows10安装WSA
  • 涨薪技术|0到1学会性能测试第64课-SQL监控之Trace选项
  • 2025 uniapp的请求封装工具类以及使用【拿来就用】
  • 基于大模型的TIA诊疗全流程智能决策系统技术方案
  • 【三维重建】三维场景生成:综述
  • Cesium.Ray 知识详解,示例代码
  • Jmeter 安装包与界面汉化
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-C. 常用SQL脚本模板
  • 高压启动电路--学习记录
  • 娃哈哈:自4月起已终止与今麦郎的委托代工关系,未来将坚持自有生产模式
  • 美国调整对华加征关税
  • 京东回应外卖系统崩溃:订单暴涨所致,已恢复
  • 今年前4个月上海对拉美国家进出口总值增长2%
  • 第1现场 | 美国称将取消制裁,对叙利亚意味着什么
  • 科技部等七部门:优先支持取得关键核心技术突破的科技型企业上市融资