全站资源开放下载,感谢广大网友的支持
链接失效请移步职业司平台
非盈利平台

非盈利平台

只为分享一些优质内容

Java帮帮-微信公众号

Java帮帮-微信公众号

将分享做到极致

微信小程序

微信小程序

更方便的阅读

职业司微信公众号

职业司微信公众号

实时动态通知

安卓APP

安卓APP

我们从此不分开

程序员生活志-公众号

程序员生活志-公众号

程序员生活学习圈,互联网八卦黑料

支付宝赞助-Java帮帮社区
微信赞助-Java帮帮社区

git&github--基础认识(二)[云图智联]

8
发表时间:2020-07-10 13:17

免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/

1 分支

1.1 分支简介

1.每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支

2.一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点


3.每次提交,当前分支都会向前移动一步,随着在master上不断提交,master分支的线也越来越长

4.当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上


5.Git创建一个分支非常快,因为只需增加一个dev指针,并且修改HEAD的指向,工作区的文件都没有任何变化

6.从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而mater指针不变


7.假如我们在dev上的工作完成了,就可以把dev合并到master上,Git通过把master指向dev的当前提交,就完成了合并


8.所以Git合并分支也很快,就改改指针,工作区内容也不变

9.合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支


1.2 分支的最佳实践

  1. 创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支

  2. 这样做和直接在master分支上工作效果一样,但过程更安全

  3. 添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个分支,在上面开发,完成后,合并,最后,删除该feature分支

1.3 分支上的操作

  1. 查看分支

#*表示当前所在分支git branch

2.创建与切换分支

#1. 创建分支feature-Agit branch feature-A#2. 切换到feature-A分支    #1. 切换到新分支后,通过git add、git commit就会在新分支上提交更新    #2. 在A分支修改文件并提交后,切换为原来的master分支后,是看不到修改内容git checkout feature-A#3. 创建并切换到feature-A分支git checkout -b feature-A#4. 快速切回到上一个分支git checkout - #5. 由于git checkout和上面撤销工作区的修改命令重复,因此最新版本的Git提供了新的git switch命令来切换分支#切换分支git swtich dev#创建并切换分支git switch -c dev

3.删除分支

#5. 删除分支git branch -d feature-vulcan#6. 强行删除未被合并过的分支git branch -D feature-vulcan

4.合并两个分支

#1. 现要将dev分支合并到master分支上,需要先切换回master分支git checkout master#2. 将dev合并到master上git merge dev

5.图表形式查看分支的合并情况

git log --graph

1.4 解决git冲突

1.不同分支,对同一文件,同一位置,进行了修改与提交,当想进行merge操作时,就会产生冲突

#1. 由于当前master分支和feature1分支都修改了readme.txt文件的同一位置,尝试将feature1合并到master上时,提示Merge conflict in readme.txt,产生冲突git merge feature1#2. 查看冲突的文件git status#3. 需要人为修改冲突文件后,将冲突文件add、commit



2.当向远程库中push代码时,也会产生冲突,可以现从远程库pull下来最新内容,在本地进行合并后(冲突解决方式和本地一样),再push

1.5 --no-ff合并分支:合并时推荐使用

  1. 假设当前分支信息如下

          A---B---C feature         /D---E---F master

2.执行git merge feature命令时,只会简单地把指针右移,叫做"快进"(fast-forward),合并后结果如下

          A---B---C feature         /         masterD---E---F 

3.而如果使用git merge --no-ff feature命令禁止快进式合并,合并后结果如下,也就是会产生一个新的提交

          A---B---C feature         /         \D---E---F-----------G master

4.快进式合并会把feature的提交历史混入到master中,搅乱master的提交历史。但如果你根本不在意提交历史,也不爱管 master 干不干净,那么 --no-ff 其实没什么用。不过,如果某一次 master 出现了问题,你需要回退到上个版本的时候,比如上例,你就会发现退一个版本到了 B,而不是想要的 F,因为 feature 的历史合并进了 master 里

1.6 与远程库中分支建立关联

  1. 可以将远程库中的某个分支设为本地仓库中的某个分支的上游,这样之后,git pushgit pull命令就不需要再加参数,默认会向当前分支的上游分支去进行pushpull

#1. 方案一:push的同时添加上游分支,比较常用,且如果远程库中当前没有master分支,就必须使用这个命令,为远程库建立分支的同时,设定上有游分支git push -u origin master#2. 克隆后,默认情况下本地只有master分支,如果需要其他分支,需要创建远程origin的dev分支到本地git checkout -b dev origin/dev#3. 方案二:直接与远程服务器上的dev进行关联git branch --set-upstream-to=origin/dev dev


免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/


Java帮帮学习群生态

Java帮帮学习群生态

总有一款能帮到你

Java学习群

Java学习群

与大牛一起交流

大数据学习群

大数据学习群

在数据中成长

九点编程学习群

九点编程学习群

深夜九点学编程

python学习群

python学习群

人工智能,爬虫

测试学习群

测试学习群

感受测试的魅力

Java帮帮生态承诺

Java帮帮生态承诺

一直坚守,不负重望

初心
勤俭
诚信
正义
分享
友链交换:加帮主QQ2524138991 留言即可 24小时内答复  
业司
满吉教育资讯
会员登录
获取验证码
登录
登录
我的资料
留言
回到顶部