2022/03/31 采用分支来保护远程仓库

采用分支来保护远程仓库

Git实现版本管理

首先了解git的特点:

  • 每一次commit都会串成一条时间线,时间线就是一条分支(主分支(master))
  • HEAD指向mastermaster指向提交,以此确定当前分支的提交点

具体形式如图:

指向图

Git的分支管理

每一次提交代码,master分支都会向前移动一步。由于HEAD指向master所以始终是最新的版本。

由于实际开发中每个人的进度不一样。所以不可能同时很多人对master分支进行操作。所以需要创建分支进行管理。

Git的创建分支:

*本质上Git创建分支就是创建一个指针,指向master分支。新建dev*分支

git branch dev
切换到新建的分支:

HEAD指针的指向从master改到指向新建的dev分支

git checkout dev

新建分支

一个指令完成创建和切换分支的操作:

git checkout -b dev

此时在有任何提交都是在dev上发生的。master主分支的指针指向不会改动。

提交

Git的分支合并:

本质:

直接将master指针的指向知道dev分支

由于当前我们是在dev分支下,所以需要切换到master分支在进行合并

切换master

git checkout master

然后将master的指针指向dev分支:

分支合并

git merge dev
# git merge用于合并指定分支到当前分支
此时查看所有分支:
git branch
# 带*的分支就是当前所在分支

指令总结

  • 查看分支:git branch
  • 创建分支:git branch <分支名>
  • 同时在本地和远端建立分支:git checkout -b dev origin/dev
  • 切换分支:git checkout <分支名>orgit switch <分支名>
  • 创建+切换分支:git checkout -b <name>或者git switch -c <name>
  • 合并某分支到当前分支:git merge <name>
  • 删除分支:git branch -d <name>

解决冲突

要了解两个点:

  • 什么情况下会发生冲突
  • 如何解决冲突
场景举例:
# 创建新分支newDev
git checkout -b feature1
# 修改文件后添加到暂存区
git add read.txt
# 提交到版本库
git commit -m "新的提交"
# 切换到主分支
git checkout master
# 在master分支上修改read.txt文件,并提交到版本库
git add read.txt
git commit -m "master分支上的提交"

此时在主分支上的情况是master分支和feature1分支都有了新的提交。如图:

冲突

此时执行合并代码就会提示存在不同:

git merge feature1

此时通过git status可以查看状态--->会提示两个分支同时修改的文件

处理步骤:

打开同时修改的文件查看内容--->统一内容以后在保存重新提交到暂存区--->再次提交--->再次合并

Git<<<<<<<=======>>>>>>>标记出不同分支的内容

修改好后重新添加到暂存区重新提交到版本库:--->这个操作是在master分支上

git add read.txt
git commit -m "新的提交"

此时的版本关系是这样的:

解决冲突

此时可以查看分支合并情况:

git log --graph --pretty=online --abbrev-commit

删除feature1分支:

git branch -d feature1

指令总结

  • 当Git无法自动合并分支时,必须首先解决冲突。解决冲突后,再提交,合并完成。

  • 解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

  • git log --graph命令可以看到分支合并图。

posted @ 2022-03-31 13:17  俊king  阅读(45)  评论(0)    收藏  举报