天天造轮子 - Git详解(下)

简介: 天天造轮子 - Git详解

分支管理


如果你每次只开发一个功能点或者修改一个Bug。不需要并行开发的可能你不需要分支。不过现实情况是很有可能你正在开发一个长达几天的新特性时你又不的不去修改一些紧急的bug,又或是有个小伙伴急着让你帮助他解决他所遇到的问题。这就有点像你需要不断的从不同进度点开始玩游戏。这个时候分支就可以帮我们解决这个问题。 git的分支管理在所有的版本控制工具中出类拔萃分厂推荐大家使用分支功能。


创建分支开发


默认情况下我们会处于master分支,在开始开发前我们首先要做的就是切分一个新的分支。比如开发一个叫做FunA的功能点。


# 分支A
# 创建分支并切换分支到funA
git checkout -b 'funA'
# 完成功能
echo 'FunA XXXXXXX' >> README.md
# 提交功能
git commit -am 'funA add'
# 检出master分支
git checkout master
# 合并将开发分支合并到主分支
git merge funA
# 可以利用-d合并的同时删除分支
git merge -d funA


网络异常,图片无法展示
|


分支的查看、删除


# 查看
git branch 
# 查看 - a 包括远程分支
git branch -a
# 删除
git branch -D <分支名称>


冲突解决


假设两个分支都针对同一行代码进行修改,就会造成冲突,需要人工确定那一个分支得到保留。 就好比两个人一个主张走A路线,另一个主张走B路线。最后需要再合并的时候决定到底走哪个路线。


首先我们先制造这样一个冲突,假设我们将开启连个分支 分别将README文件的第一行 做不同而修改


  • step01 : Step01 Create File AAA


  • step01 : Step01 Create File BBB


# 创建分支并切换分支到funA
git checkout master
git checkout -b 'funA'
echo 'STEP01 AAA' > README.md
git commit -am 'step01 AAA'
# 创建分支并切换分支到
git checkout -b 'funB'
echo 'STEP01 BBB' > README.md
git commit -am 'step01 BBB'
# 可以利用-d合并的同时删除分支
git checkout master
git merge -d funA
git merge -d funB


由于对同一行代码进行了修改这个时候Git就需要人工区合并代码 如果 想要撤销merge状态


git merge --abort


网络异常,图片无法展示
|


网络异常,图片无法展示
|


如果在VSCode编辑器中会更加清晰一些


网络异常,图片无法展示
|


下面要做的就是人工保留你需要的部分, 然后进行一次merge提交。其实取舍AAA还是BBB本身就是一次变更所以其实就是一次的代码commit。


git commit -am 'Merge branch funB'


网络异常,图片无法展示
|


最后我们可以通过log看一下这次合并过程


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


网络异常,图片无法展示
|


清洗提交历史 -- squash方式合并


如果你的分支开发历经各种磨难,里面有很多细节的功能进展你不希望其他人了解,又或者你在开发的过程中肚子饿了,希望通过一次的commit来保留中间成果。但是最终提交的时候不希望你的这些中间细节被被人了解,可以采用这样的办法


# 创建分支并切换分支到funA
git checkout master
git checkout -b 'funA'
echo 'STEP02 BBB' >> README.md
git commit -am 'FunA commit 01'
echo 'STEP03 BBB' >> README.md
git commit -am 'FunA commit 02'
# 切换master分支
# 使用squash方式提交 只合并不commit
git merge --squash funA


这个时候我们可以用git status查看一下发现合并代码后并没有提交。只是将所有的提交都整合到了一起放在暂存区。


网络异常,图片无法展示
|


# 创建分支并切换分支到funA
git commit -am 'funA update'


这个时候我们可以使用commit方式进行提交留下光辉的而干净的一笔。


网络异常,图片无法展示
|


Rebase变基操作


去除版本合并痕迹 (待续)


其他命令总结


# 删除分支
git branch -D <branch_name>


标签管理


标签管理就是给自己的代码打上版本标记。其实就是给自己的版本设置里程碑。


# 将最新提交打标签
git tag v1.0
# 将指定commit打标签
git tag v0.9 4ab025
# 查看打标签
git tag 
# 查看与某标签之间的差距
git show v0.9


远程仓库GitHub


如何获取远程仓库


  • GitHub 世界上最大的开源社区


  • Gitee 国内的速度快


  • 自己搭建Gitlab


(后续会教大家如何一行配置搞定gitlab搭建)


git建立远程仓库


网络异常,图片无法展示
|


网络异常,图片无法展示
|



另外与远程资源库通讯通常采用ssh协议,所以需要将你的ssh公钥添加到github账户中


网络异常,图片无法展示
|


获取公钥的方法可以参考公钥获取方法


添加远程分支


# 添加远程分支
git remote add origin git@github.com:su37josephxia/hello-git.git


查看


git remote -v


网络异常,图片无法展示
|


推送 push


git push


拉去 fetch


git fetch
# 如果有多个远程源时
git fetch <拉去源>


拉去 pull


相当与先fetch + merge


git pull


GitHub之Watch


表示关注、这个项目的所有动态包括PR ISSUE你的信息中心和邮箱都会收到。


GitHub之Star


表示点赞、表示对这个项目支持。github.com/su37josephx…Star一下我这个项目。


欢迎大家来造轮子


GitHub之Fork


相当于复制了目前项目的文件,后续变化必须手动更新。 手动更新方法如下:


# 本地新加一个新的远程库upstream
git remote add upstream https://github.com/vuejs/vue-next


# 从远程仓库拉去代码
git fetch upstream
# 切换分支
git chekout master
# 合并远程分支
git merge upstream/master


相关文章
|
7月前
|
Linux 开发工具 git
Git多人协作(二)
Git多人协作(二)
50 0
|
7月前
|
Linux 开发工具 git
Git多人协作(一)
Git多人协作(一)
63 0
|
存储 缓存 安全
Git 版本控制工具详解
Git 版本控制工具详解
Git 版本控制工具详解
|
缓存 Unix Linux
【知识】Git:团队协作与版本控制工具
【知识】Git:团队协作与版本控制工具
【知识】Git:团队协作与版本控制工具
|
存储 容灾 Linux
版本控制工具:使用Git的意义和笔记
版本控制工具:使用Git的意义和笔记
199 0
|
测试技术 程序员 开发工具
Git 最佳实践:分支管理
5月份,为统一团队git分支管理规范,刚开始准备自己写,在网上搜了下,发现不少不错的git分支管理实践。最后我为团队选择了这个git分支管理实践 A successful Git branching model ,网上有不少参考这篇文章写的中文版gitflow实践,推荐一个中文版的Git 最佳实践:分支管理。
14819 0
|
安全 网络安全 开发工具
Git入门分支管理
Git入门分支管理
147 0
Git入门分支管理
|
存储 缓存 监控
天天造轮子 - Git详解(上)
天天造轮子 - Git详解
148 0
|
缓存 Linux 开发工具
【Git开发教程 三 —— Git分支管理】
【Git开发教程 三 —— Git分支管理】
|
开发工具 git
git 代码分支管理教程
git 代码分支管理教程
190 0
git 代码分支管理教程

相关实验场景

更多