福建省交通建设质量安全监督局网站wordpress 如何升级
文章目录
- Git概述
 - Git基础指令
 - Git进阶使用
 - 一、Git分支
 - 1.主干分支
 - 2.其他分支
 - 2.1创建分支
 - 2.2查看分支
 - 1. 查看本地分支
 - 2. 查看远程分支
 - 3. 查看本地和远程分支
 - 4. 显示分支的详细信息
 - 5. 查看已合并和未合并的分支
 
- 2.3切换分支
 - 1. 切换到已有的本地分支
 - 2. 创建并切换到新分支
 - 3. 切换到远程分支
 - 4. 切换到上一个分支
 - 注意事项
 
- 2.4删除分支
 
- 二、Git合并
 - 三、Git冲突
 - 1. 创建初始仓库和文件
 - 2. 创建分支 B1 并进行修改
 - 3. 创建分支 B2 并进行修改
 - 4. 合并 B2 到 master 分支 (预期无冲突)
 - 5. 合并 B1 到 master 分支 (预期有冲突)
 - 6. 解决冲突
 - 7. 标记冲突已解决并完成合并
 - 8. 查看合并结果
 
Git概述
Git基础指令
Git进阶使用
一、Git分支
-  
在 Git 中,分支允许你在同一个代码库中同时进行不同的工作,而不会相互干扰。
 -  
每个分支都代表了代码库的一个独立线索,可以用来开发新功能、修复 bug、修改配置文件等,而不会影响其他分支的内容。
 -  
使用分支可以很好地解决环境配置文件不同的问题。
 -  
可以创建不同的分支来管理本地环境和服务器环境的配置文件,这样就可以根据需要在不同的分支上进行修改,而不必担心冲突或混淆。
 -  
分支感觉上就是树上的分叉一样,会按照不同的路线生长下去。有可能以后不再相交,当然,也可能以后会不断地纠缠下去,都是有可能的。

 
1.主干分支
-  
默认情况下,Git 仓库在初始化时会创建一个名为
master的分支,这是 Git 的默认主分支。

 -  
这个分支通常被认为是代码库的主干,所有稳定和经过测试的代码通常都会合并到这个分支。
 -  
所有的操作如果不显式地切换到其他分支,都会在这个默认分支上进行。
 
需要注意的是,近年来 Git 和许多软件项目开始将默认分支名称从 master 改为 main,以避免可能的歧义和历史包袱。如果你使用较新的 Git 版本或某些托管服务(如 GitHub),初始化仓库时默认分支名称可能是 main 而不是 master。
2.其他分支
如果仅仅是一个分支,在某些情况并不能满足实际的需求,那么就需要创建多个不同的分支。
2.1创建分支
git branch分支名称
git branch b1
git branch b2
 
现在我们创建了2个分支,不过这两个分支都是基于master主干分支为基础的。
 
2.2查看分支
1. 查看本地分支
要查看当前仓库中的所有本地分支,可以使用以下命令:
git branch
 
这个命令会列出所有本地分支,并且会用 * 标记当前所在的分支。
$ git branch
* masterfeature-branchbugfix-branch
 

在这个输出中,master 是当前所在的分支。
2. 查看远程分支
如果你想查看远程仓库中的所有分支,可以使用以下命令:
git branch -r
 
这个命令会列出所有远程分支。
$ git branch -rorigin/HEAD -> origin/mainorigin/mainorigin/feature-branchorigin/bugfix-branch
 
这里 origin 是默认的远程仓库名称,可以看到远程仓库中的分支列表。
3. 查看本地和远程分支
同时查看本地和远程的所有分支,可以使用以下命令:
git branch -a
 
这个命令会列出本地和远程的所有分支。例如:
$ git branch -a
* masterfeature-branchbugfix-branchremotes/origin/HEAD -> origin/mainremotes/origin/mainremotes/origin/feature-branchremotes/origin/bugfix-branch
 
在这个输出中,本地分支和远程分支会分别列出,其中远程分支前面带有 remotes/ 前缀。
4. 显示分支的详细信息
如果你想查看分支的更多详细信息,比如每个分支的最后一次提交,可以使用以下命令:
git branch -v
 
这个命令会列出每个分支的名称及其最近的一次提交信息。
$ git branch -v
* master          a1b2c3d Initial commitfeature-branch  d4e5f6g Added new featurebugfix-branch   g7h8i9j Fixed a bug
 

5. 查看已合并和未合并的分支
-  
查看已经合并到当前分支的所有分支.
git branch --merged -  
查看尚未合并到当前分支的所有分支。
git branch --no-merged 
2.3切换分支
1. 切换到已有的本地分支
要切换到一个已经存在的本地分支,可以使用以下命令:
git checkout <branch-name>
 
将工作线路切换到b1
# git checkout 分支名称
git checkout b1
 

添加新的文件b1.txt,然后提交到版本库。
 
 
查看分支信息,会发现不同分支的版本进度信息发生了改变

 此时切换回到主干分支的话,那么b1.txt文件就不存在了,因为对应版本信息不一样。

 
2. 创建并切换到新分支
创建一个新的分支并立即切换到该分支
git checkout -b <new-branch-name>
 

3. 切换到远程分支
远程分支是位于远程仓库中的分支,切换到一个还没有在本地存在但在远程仓库中存在的分支,需要先将其拉取到本地,然后再切换。
-  
使用
git fetch命令更新远程仓库信息:git fetch -  
使用以下命令创建一个新的本地分支并追踪相应的远程分支:
git checkout -b <new-branch-name> origin/<remote-branch-name> 
创建并切换到一个名为 remote-feature 的远程分支
git checkout -b remote-feature origin/remote-feature
 
4. 切换到上一个分支
Git 提供了一种方便的方法来快速切换回你之前的分支,可以使用 - 选项:
git checkout -
 
这个命令会切换到你上一次所在的分支。例如,如果你从 master 分支切换到 feature-branch 分支,然后想要快速切换回 master 分支,可以简单地执行:

注意事项
-  
未提交的更改:在切换分支前,确保你在当前分支上的未提交更改不会丢失。你可以通过以下方式处理:
-  
提交未提交的更改。
 -  
将未提交的更改暂存到
stash中:git stash 
然后在新分支上恢复:
git stash apply -  
 -  
冲突:如果你在切换分支时遇到冲突,Git 会提示你解决冲突。你需要手动解决冲突并提交解决冲突后的结果。
 
2.4删除分支
某一个分支建立的不太理想或已经没有必要在使用了,那么是可以将这个分支删除的。
git branch -d 分支名称
 


二、Git合并
-  
在软件开发中,通常会创建多个分支来同时进行不同的工作,比如修复 bug、开发新功能、进行实验性的工作等等。每个分支都代表了一个特定的工作环境和目标。
 -  
然而,最终目标是将这些分支合并到主要的代码库中,形成项目的最终结果。这通常通过合并分支或者重新基于最新代码进行开发来实现。
 

将b3分支的文件内容合并到主干分支中。
首先先切换回主干分支
 
 
创建b3分支,并直接切换到新的分支

 
在新的分支中添加新文件b3.txt

 
 
此时切换回主干分支,只有yushifu.txt文件。

我们将b3分支的文件内容合并到主干分支中。
首先先切换回主干分支
 
执行分支合并指令
# git merge 分支名称
git merge new_branch
 

 此时再次查看文件,就会发现b3.txt文件已经可以看到了。
三、Git冲突
- 在多分支并行处理时,每一个分支可能是基于不同版本的主干分支创建的。
 - 如果每隔分支都独立运行而不进行合并,就没有问题,但是如果在后续操作过程中进行合并的话,就有可能产生冲突。
 - 比如B1, B2的两个分支都是基于master分支创建出来的。B1分支如果和B2分支修改了同一份文件的话,那么在合并时,以哪一个文件为准呢,这就是所谓的冲突。
 

可以通过一个具体的例子来展示如何处理 Git 合并冲突。
假设我们有一个 README.md 文件,并且我们有两个分支 B1 和 B2,它们都是基于 master 分支创建的。在这些分支中,我们对 README.md 进行了不同的修改。
1. 创建初始仓库和文件
# 初始化一个新的Git仓库
git init example-repo
cd example-repo# 创建 README.md 文件
echo "This is the master branch" > README.md# 添加并提交
git add README.md
git commit -m "Initial commit on master"
 
2. 创建分支 B1 并进行修改
# 创建 B1 分支
git checkout -b B1# 修改 README.md 文件
echo "Change made in B1 branch" >> README.md# 添加并提交
git add README.md
git commit -m "Update README.md in B1"
 
3. 创建分支 B2 并进行修改
# 切换回 master 分支
git checkout master# 创建 B2 分支
git checkout -b B2# 修改 README.md 文件
echo "Change made in B2 branch" >> README.md# 添加并提交
git add README.md
git commit -m "Update README.md in B2"
 
4. 合并 B2 到 master 分支 (预期无冲突)
# 切换回 master 分支
git checkout master# 合并 B2 分支
git merge B2
# 没有冲突,合并成功
 
5. 合并 B1 到 master 分支 (预期有冲突)
# 合并 B1 分支
git merge B1
# 这时会产生冲突,因为 README.md 文件在 B1 和 B2 分支中都被修改了
 

6. 解决冲突
现在我们查看 README.md 文件,会看到如下内容:
This is the master branch
<<<<<<< HEAD
Change made in B2 branch
=======
Change made in B1 branch
>>>>>>> B1
 

这里的冲突,软件是无法判断该如何出来处理的,所以需要人工进行判断,将冲突的文件内容进行修正。
假设我们希望保留两处修改,可以将文件编辑成如下内容:
This is the master branch
Change made in B2 branch
Change made in B1 branch
 
7. 标记冲突已解决并完成合并
# 标记 README.md 为已解决
git add README.md# 完成合并
git commit -m "Merge B1 branch and resolve conflict"
 
8. 查看合并结果
现在查看 README.md 文件,确认合并后的内容:
This is the master branch
Change made in B2 branch
Change made in B1 branch
 

本文仅供学习使用!
