GIT是目前广为所知的分布式版本控制系统。本人用过VSS/CSV/SVN,现在用得多的一般是SVN,GIT相较而言,众多优缺点中,个人认为最大的特点还是开源(私有项目要收取费用),单位项目都有保密要求,但git作为学习平台还是很不错的。(GIT中文网站为码云https://gitee.com)
说明
git --> 本地仓库 (add/commit/revert...)
github --> 远程仓库(pull/push/clone...)
环境
Windows7 64位
Intellij IDEA 2018.1.5
Git 2.18.0
GIT官网(https://github.com)注册用户
一、安装git
1. 官网下载git客户端安装文件
地址:https://git-scm.com/downloads
本文安装的版本为:Git-2.18.0-64-bit.exe
2. 安装git
双击下载的exe文件进行安装,本文除了修改安装路径外(E:\Program Files\Git),其余均为默认设置,安装结束后菜单栏增加如下git项:
二、Intellij IDEA配置git
1. 进入配置页面
File --> Other Setting --> Default Settings...
2. 配置git
配置git.exe路径和公钥类型,如下图:
配置好后点击“test”按钮进行测试,弹出git版本信息即配置成功
3. 配置github
Auth Type选择Password,Host不需要修改,Login和Password是在github网站申请的账号和密码,如下图:
配置好后点击“test”按钮进行测试,如下图即为成功
4. git生成ssh秘钥
开始-->所有程序,打开Git Bash,如下图
在打开的命令窗口中输入:ssh-keygen -t rsa -C "sweetswn",再接着按3次Enter(需要enter的地方不输入任何信息,直接按Enter键),如下图即可看到已成功生成public key。
(注意:命令中的sweetswn为github网站账号,具体值因人而异。Git Bash窗口暂不关闭,用于验证shh秘钥是否成功添加到github。)
秘钥文件目录如下图:
5. github添加ssh秘钥
账号密码登录github(网址:https://github.com)
如下图增加SSH Key:
验证ssh key是否已成功添加到github。
回到Git Bash窗口,输入命令:ssh git@github.com,输出信息如下图即为成功。
三、Intellij IDEA使用git
1. 创建github远程仓库
账号密码登录github(网址:https://github.com)
如上图,输入对应信息后,点击“Create repository”按钮即可创建一个远程仓库地址。
(注意,项目选择public,private需要收费)
2. 创建本地git仓库
A. 鼠标选中一个项目,菜单栏VCS --> Import Into Version Control --> Create Git Repository...
B. 创建好后可以在 File --> Settings 中查看版本控制信息
3. 项目代码提交到git仓库
A. 右击项目(整个项目提交)或者单个文件夹或文件,Git,Add
B. Commit...
4. 提交到github远程仓库
(注意:上图中的URL应为http://github.com/sweetswn/test.git)
URL中,sweeetswn为github账号,test为github上已经创建的仓库名称,如果没有该仓库,请参考前文【1. 创建github远程仓库】
5. 从github远程仓库获取项目代码
6. 仓库分支(Branches)
比如临时修改bug、不确定是否上线的代码等等,可以建立新的分支。
A. 创建本地新分支
创建完成后注意IDEA右下角,如下图,已经自动切换到了刚新建的temp分支
点击分支后面的三角形,可以看到所有本地可用的分支,checkout即可进行分支切换
(注意:此处创建的分支仅仅在本地仓库,如果想让别人获取到这个分支,则需要提交到远程仓库)
B. 将新建的分支提交到github远程仓库
切换到新建的分支,Push
注意:上图中由于我是先push了后截的图,所以是不可操作的灰色。上图中的本地仓库和远程仓库都变成的新建的temp分支。
Push后,可以在github官网查看分支情况,如下图,temp分支已成功提交到github仓库
C. 获取github远程仓库分支
使用Pull,打开如下窗口,点击Remote后面的刷新按钮,会在Branches to merge栏中刷新出新的分支。这里并不想做合并,所以不要选中任何分支,直接点击Pull按钮完成操作。
如果本地仓库没有该分支,则更新后,点击IDEA右下角,可以看到在Remote Branches区已经有了新的分支,点击后在弹出的子菜单中选择Checkout as new local branch,在本地仓库中创建该分支。完成后在Local Branches区也会出现该分支的选项,可以按上面的方法,点击后选择Checkout切换。
D. 将分支合并到主干
新功能开发完成,体验很好,则可以把该功能合并到主干上。
切换到master分支,选择Merge Changes,如下图,勾选要合并的分支,点击Merge即可
E. 删除分支
在本地仓库(Local Branches)或者远程仓库(Remote Branches)中选择需要删除的分支,Delete即可。下图为删除github远程仓库中的分支示例。
7. 版本回退
A. 查看所有历史版本
B. 复制版本号
如上图,想要退回到创建项目的版本,复制其版本号,注意同时把最新版本号也复制出来
复制后粘贴到文本编辑器,新、旧两个版本号都有用
C. 回退到旧版本
点击Reset按钮。可查看本地代码版本已回退,而github远程仓库的代码还未回退,但此时commit提示没有可提交的文件。
D. 回退到新版本并提交远程仓库
如下图,再次进行回退,Reset Type选择Mixed,To Commit输入新版本号(步骤B)
点击Reset按钮,IDEA的History中已经回到最新版本了,但再看代码却是旧版本的代码,文件颜色也变成了绿色,此时再Commit... --> commit and push。历史版本如下图:
此时可以看到guihub网站的代码版本也回退至旧版本了。
8. 注意事项
A. 代码提交到github前,一定要先更新(fetch/pull)再提交(push),否则容易有冲突,git解决冲突比svn复杂。
B. 文件颜色为红色,则为新增的文件,需要先Add再Commit;文件颜色为绿色,则为本地修改了的文件,直接Commit。
C. 当更新(pull)失败时,说明服务器上的代码和本地代码有冲突,这时需要先将本地有冲突的代码备份,然后还原(revert),再pull,pull成功后,再把自己备份的代码部分拷入相应的代码中,再进行远程提交(push)就可以了。
D. 更新代码有两个命令: Fetch和Pull。Fetch是从远程仓库下载文件到本地的origin/master,可以手动对比修改决定是否合并到本地的master库。Push则是直接下载并合并。如果大家都严格执行先更新后修改再提交的规范,那么可以直接使用Pull。下图为代码对比