Git是免费且开源的分布式版本控制,公司中经常使用Git存储代码,具有廉价的本地库,所以学习Git也是十分重要的,尤其对于java、大数据、前端等实习生很实用,以免以后被老板骂,以下是我对Git的总结以及在最近非常受欢迎的idea中集成Git的操作
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统
其重要的作用用来记录文件的修改历史记录,从而让用户能够查看历史版本,方便进行版本切换、版本回溯等
由个人开发过渡到团队协作的时候,如果不进行版本控制的话,当多人一起修改代码的时候很容易出现后边人修改的代码把前一个人的代码覆盖的情况。为了避免这种情况,我们就需要进行版本控制。
诸如cvs、svn等,都有单一的集中管理的服务器 ,当一个人对代码进行修改的时候,其他想要修改这个代码的人要等到这个人修改之后再进行修改(个人理解:有点像代码中异步的思想), 优点是每个人都可以看到其他人正在做什么,并且管理员也可以轻松掌控每个人的权限,而且维护只需要对这个服务器维护就好,但是缺点也很明显,当这个服务器出故障或者维修不再工作的期间,所有人都没有办法工作,也不能去更新数据
以Git为代表的分布式控制系统,每个人在自己的本地库进行修改,提交到远程库里边,解决了集中式开发控制系统的缺陷:1.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)2.每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
安装比较简单,直接去官网就可以下载安装了安装完之后,在桌面右键能看见Git Gui和Git Bash就说明已经安装好了,点击Git Bash进入页面 输入 git --version查看当前版本信息
1.git config --global user.name 设置用户签名
2.git config --global user.email 设置用户签名(并不会验证 虚拟邮箱即可)
当在家目录(c盘下用户文件夹下当前正在使用的用户)下可以找到一个gitconfig文件,打开时刚刚输入的名字和邮箱,就说明设置好了,如果初次安装使用,不设置用户签名会无法提交代码(用来区分不同操作者)
3.git init 初始化本地库 在一个空文件夹里边右键打开Git Bash 输入git init就创建好了一个本地的库(默认隐藏)
4.get status 查看当前分支/本地库状态
5.git add 文件名 添加文件到暂存区
6.git rm --cached 文件名 删除文件(在暂存区删除,但是工作区的文件还在)
7.git commit -m ‘版本信息’ 文件名 将暂存区对应文件提交到本地库
8.git reflog 查看版本信息
9.git log 查看详细的版本信息
注意:当我们修改的时候只是工作区的文件修改,还是要通过暂存区传到本地库
10. git reset --hard 版本号 穿越到对应版本号的版本(通过调用指针指向不一样的版本进行实现版本穿梭)
注意:当我们修改文件之后,默认会放在工作区,我们需要把他通过放入暂存区,再放入本地库中,才可以实现更新
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支,使用分支意味着程序员可以把自己的任务从主线中分离出来,开发自己的任务时,不会影响主线分支的运行,简单来说,分支可以简单理解为副本,一个分支就是一个副本(分支底部也是指针的引用)
同时可以开发多个功能,提高开发效率,开发过时,一个分支开发失败,不会对其他的分支有任何的影响
1.git branch -v 查看当前分支
2.git branch 分支名 添加分支
3.git chekout 分支名 切换分支
4.git merge 分支名 把指定的分支合并到当前分支上
当我们在一个分支输入git merge 分支名 将指定的分支合并到当前分支下.
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改,Git无法替我们决定使用哪一个,必须人为规定新代码内容,
这个时候会发先文件里边会出现**<<<<<<<** **======= >>>>>>> 在<<<<<<<和 =======是当前分支下文件的对应的内容,在=======和>>>>>>>**之间是我们要合并进来的分支的对应位置的内容。注意在手动更改完之后要把这些符号删除,这个时候合并之后的文件在工作区,还需要通过指令添加到本地库 注意:从缓存区提交本地库的时候代码不能带者文件名称,否则会报错,合并之后只会修改当前分支的文件。
管理员把本地库的代码通过push推送到远程库,其他人通过clone克隆远程库的代码到本地库,修改之后如果拥有权限通过push推送回去,管理员就可以通过pull拉取远程库的代码从而更新自己的本地库的代码
团队外的人通过fork从远程库传入自己的远程库,然后clone到自己的本地库,然后进行修改,通过push推送到自己的远程库再通过给原来的远程库发送一个pull request请求 管理员通过以后进行合并
登录GitHub,登录以后点击右上角的加号,点击Create a new repository ,填入远程库名字,最好和本地库一致,然后选择公共库还是私有库,点击创建库,就创建好了,创建以后会发现有两个链接(HTTPS和SSH)
1.git remove -v 查看当前所有远程地址别名
2.git remove add 别名 远程库链接创建别名
3.git push 别名 分支名字 把指定分支推送到别名的 远程库
4.git pull 别名 分支名字 把指定别名远程库更新到本地库分支(会自动提交到本地库)
5.git clone 远程库链接 把对应远程库的代码克隆到本地库(如果管理员设置的公开可见,就不需要登陆)
克隆会做如下操作:1.拉取代码2.初始化本地仓库3.创建别名(和远程库之前的别名同步)
管理员登陆以后,点开自己的库->setting->Manage access->Invite a collaboratcor进行邀请 复制邀请函点开后接受
找到对应项目以后,在GitHub右上角点击fork,更改完之后,点击pull request请求->new pull request 创建请求-,管理员那边同意就好了
ssh-keygen -t rsa -C 账户邮箱输入完敲三次回车 就好了 然后cat id_rsa.pab 取到密钥,然后在GitHub页面settings
中SSH…中keys中输入就好了