总结
最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
首先到Git托管平台上创建一个空的项目,公司使用的Git托管平台是GitLab,所以先到GitLab上面创建一个项目:
点击右上角的加号按钮,打开创建页面,输入项目名称、描述、选择项目的路径,点击create,会创建一个新的空项目出来, 在GitLab上面进入刚创建的项目查看,可以看到GitLab为我们列出了常用的Git命令:
由于是首次创建项目是空的,所以我们本地先提交一个工程代码上去
先找一个目录执行:git clone git@gitlab.xxx.com:xxx/DemoProject.git
拉取远程仓库
这里使用的是windows平台的客户端(gitforwindows),在git bash中输入命令会克隆下来一个空目录到本地
然后我们用Android Studio创建一个工程项目:
将创建的工程文件复制到刚才clone下来的仓库目录里,或者在AS创建项目的时候项目路径选择刚才clone下来的目录
由于是第一次提交,我们需要打开根目录下.gitignore
文件忽略一些不必要的文件如build、.idea、iml等, 在.gitignore
文件中输入下面内容并保存:
*.iml
.gradle
/.idea
/local.properties
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
.DS_Store
/build
/captures
.externalNativeBuild
同样在工程下面的每个module目录下面也有一个.gitignore
文件,我们在其中输入下面内容并保存:
*.iml
/build
然后在该目录下依次执行下面命令:
git add .
git commit -m “添加项目文件”
git push
这样项目就被提交到远程仓库了,其他人就可以从仓库上clone这个工程的代码
AS中clone远程仓库
我们重新打开AS,选择checkout刚才的提交项目:
在弹出框中输入远程仓库的地址,点击clone即可。当然你可以用命令先clone到文件夹,再从AS中File菜单选择open该目录也可以。
提交代码
AS中的更新和提交基本上都是在工具栏上的这两个按钮,提交代码点击右边的按钮,只不过在AS中提交代码到Git
比Svn
要多一步push
操作。
由于项目没有变动所以提交会提交没有东西可以提交,我们先创建一个类,创建完毕会弹出下面的弹窗:
注意这里一定要勾选Remember, don't ask again
, 不然后面新添加的文件你都得手动右键Git菜单去add
,勾选之后新创建的文件就会自动被执行add
操作。然后我们再修改一个原有的类,完了点击提交按钮:
在弹窗中会列出有变动的文件(包括新增的、修改的、删除的),输入提交日志点击commit, 注意Git到这一步只是提交到本地仓库,并没有提交到远程Git服务器。
这时在AS的Version Control
面板中可以看到提交日志记录以及提交的文件:
接下来就是执行push操作,如果以前用惯了SVN的话可能会经常忘记最后一步的push操作:
或者直接在commit的时候点击commit按钮旁边的三角下来选择Commit and Push
也可以进行push操作:
提交成功之后AS右下角会有个类似Toast的弹窗提示,并且这时我们再查看AS的Version Control
面板中可以看到刚才的提交日志旁边的标签符合会有一点不一样,多了一个origin
表示到这一步的改动已经提交到服务端。
这时到浏览器上去查看Gitlab上面的工程也能看到刚刚的提交日志
一般在进行提交操作之前,最好先执行update操作,因为有可能别人提交了代码跟你的有冲突。
创建分支
AS中创建分支可以直接点击右下角的底部工具栏点击Git:master选择New Branch
或者在右键选择Git-Repository-Branches
也行
在弹出的弹窗中输入分支名称:
点击OK就会创建新的本地分支,注意这个弹窗有一个Checkout branch
复选框,默认是勾上的,这意味着创建完该分支的同时AS会将当前工程切换到该分支下,如果你只是想创建一个新的分支并不想切换到该分支,还是打算留在当前分支的话,那么就不要勾选这个就可以了。
创建完毕后我们再次点击底部的按钮查看分支:
可以看到新创建的分支只是存在于Local Branches
当中,Local Branches
现在有三个分支,其中前面带有一个箭头符号的表示AS当前所处的分支,而在Remote Branches
当中是只有master
分支。
那怎么把本地分支提交到远程仓库呢,很简单,在当前分支下再执行一遍commit
、push
操作就可以了,提交完成后,我们再次查看分支情况:
这时在Remote Branches
当中多了一个origin/develop
分支,表示已经提交成功了,同时我们到Version Control
面板中去看一下也会发现区别标志:
我们在浏览器中看一下GitLab上的分支情况,可以看到确实多了一个分支:
上面是在AS中创建的分支,当然你也可以直接在浏览器中创建:
这样创建完毕会直接在服务端生成新的分支:
我们可以在AS中看一下此时的分支情况(需要先执行一下update操作):
可以看到在Remote Branches
当中分支多了一个origin/zhaoyun
分支
切换分支
切换本地分支
切换本地分支很简单,在Local Branches
当中选择要切换的本地分支,然后执行CheckOut
就可以:
这个菜单里除了CheckOut
还可以CheckOut as New Branch
即在当前分支的基础上再创建一个新分支。
切换完分支后底部会显示当前分支的名字:
切换远程分支
切换远程分支可以在Remote Branches
当中选择一个想要切换的远程分支进行CheckOut
切换完成以后当前工作空间就会切换到该分支并且在Local Branches
当中多了名为zhaoyun的分支:
当然这里在切换远程分支时最好选一个本地没有的对应的远程分支,如果你选了一个本地已有的分支,比如这里选develop
, 弹出的弹窗就会提示该分支已存在:
当然你如果改一个名字也是可以再check出来一个的:
这样本地就会存在两个对应远程develop的本地分支,这两个分支可以分开开发互不影响。
合并分支代码
合并本地分支代码
这种情况下一般是你自己在本地check了好几个远程分支的本地分支,然后自己想要合并不同的分支代码,在Local Branches
当中选择要合并的本地分支执行Merge
操作即可,比如现在是master
本地分支,我要合并develop
的本地分支:
合并后只是在本地进行了代码合并,如果想要在远程仓库也合并,需要在合并之后当前分支执行commit和push操作。
合并本地分支冲突
两个本地分支合并以后,如果没有冲突,并且被合并以后的代码没有被commit, 这时他们会共用相同的工作空间共用一份代码,修改代码的时候,所有merge过的本地分支代码都会被修改。
假如这时你commit了其中一个分支的修改的代码,那么再切换分支的时候,不同分支的代码就又会分隔开来。
假如这时你commit了其中一个本地分支的代码后又修改了代码,那么再次进行checkout另一个分支的时候,可能会发生冲突:
我们点击Smart Checkout按钮,会弹出冲突合并的弹窗:
点击merger按钮:
这个弹窗当中左边的框中是当前本地分支的尚未进行commit的代码,右边的框中是要checkout的目标分支的本地代码,而中间的框是最终合并的结果,你可以点击左右两边的 x
或者 >>
来选择保留或者舍弃某一边的代码。点击Apply
按钮会保留merge的结果,如果你点击了关闭弹窗,则冲突会被保留到代码当中:
这时即便你手动删除了冲突的代码,当你再次尝试切换分支的时候,依然会提示你冲突未解决:
点击提示中resolve,可以看到又会弹出刚才的merge弹窗:
保证冲突被解决后AS才会进行分支切换
本地分支合并远程分支
这种情况最常见,一般是多人开发,别人开的分支提交了代码之后,你的本地分支想去合并它提交的代码。
操作跟合并本地分支一样,直接在Remote Branches
当中选择要合并的本地分支执行Merge
操作即可:
合并之后不要忘了把合并的结果执行push操作
合并远程分支冲突
如果在本地分支合并远程分支的过程中出现冲突,AS会自动弹出合并冲突的弹窗:
点击Merge按钮会弹出下面的弹窗:
这个弹窗当中左边的框中是当前本地分支的代码,右边的框中是要merge的目标分支的远程代码,而中间的框是最终合并的结果,你可以点击左右两边的 x
或者 >>
来选择保留或者舍弃某一边的代码,当然为了保险有的时候还是需要仔细检查后手动去复制修改,以免误操作导致代码丢失错乱。注意,点击Apply
按钮才会保留merge的结果,如果你点击了关闭弹窗,则不会做任何改变。
最后
有任何问题,欢迎广大网友一起来交流,分享高阶Android学习视频资料和面试资料包~
偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
做任何改变。
最后
有任何问题,欢迎广大网友一起来交流,分享高阶Android学习视频资料和面试资料包~
偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊!
[外链图片转存中…(img-M6eEy1vL-1715647152519)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!