2022/03/31 采用分支来保护远程仓库
采用分支来保护远程仓库
Git实现版本管理
首先了解git的特点:
- 每一次commit都会串成一条时间线,时间线就是一条分支(主分支(master))
- HEAD指向- master,- master指向提交,以此确定当前分支的提交点
具体形式如图:
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分支在进行合并
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命令可以看到分支合并图。
    It's a lonely road!!!
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号