本教程来源于b站尚硅谷视频:5h打通Git全套教程IDEA版(涵盖GitHubGitee码云GitLab)
教程介绍:
免费开源的分布式版本控制系统。
- 集中式代表svn(subversion),代码存在中央服务器中,谁用谁就down下来一个版本,缺点是单点故障,服务器没了,push,commit,pull都不行。
- 分布式代表git,联网从远程库中下载下来全部的版本,如果远程库没了,由于本地端点有全部的版本,可以在本地进行commit和pull,等服务器好了再push就行。
git和svn的详细区别可以参考Git和SVN的区别(以后别再问我了)。
版本控制就是编程界的后悔药,程序改崩了可以回滚到特定版本。
其实个人自己建文件夹也能做到版本控制,使用版本控制工具最重要的其实是团队协作开发时代码的合并,不至于你开发你的,我开发我的,导致代码混乱。
git本地的代码存储:
代码托管中心(远程库):
- 局域网:gitlab
- 互联网:github,gitee
去官网https://git-scm.com/下载。
找个非中文目录一路next安装就行了。
安完后右键git bash here,看看版本号:
命令也可以在cmd里输。git bash框是用linux命令操作的。
命令单词可以用tab补全。
| 命令代码 | 作用 |
|---|---|
| git config --global user.name 用户名 | 设置用户签名 |
| git config --global user.email 邮箱 | 设置用户邮箱 |
| git init | 初始化本地库 |
| git status | 查看本地库状态 |
| git add 文件名 | 添加到暂存区 |
| git commit -m “”“日志信息” 文件名 | 添加到本地库(“日志信息”是描述信息,英文双引号包裹) |
| git reflog | 查看简单历史纪录:带版本号,当前版本指针,描述信息 |
| git log | 查看详细历史纪录:除了简单信息还有作者,邮箱,时间 |
| git reset --hard 版本号 | 版本穿梭 |
| 分支命令 | 作用 |
|---|---|
| git branch 分支名 | 创建分支 |
| git branch -v | 查看分支 |
| git checkout 分支名 | 切换分支 |
| git merge 分支名xx | 把xx分支合并到当前分支上 |
合并时的冲突:
vim手动打开冲突文件:
将前中后的标识符号去掉,再保留要的代码:
保存文件后再add+commit:
第一步:1号人在本地上创建了本地仓库,然后编了代码,push到远程仓库
第二步:2号人从远程库上clone下来全部代码,搞了个新的本地库(git的分布式属性)
第三步:2号人开发新代码后add+commit+merge+push到远程库,更新了远程库
第四步:1号人隔一段时间后从远程库pull下来代码更新本地库
当然不能谁都可以push代码,有权限控制。
第一步:不同团队不同远程库,所以2号团队的人想得到代码,要先fork1号团队远程库里代码到2号的远程库
第二步:2号团队的人clone下来
第三步:2号团队的人修改后push上去自己的远程库
第四步:1号团队通过命令,审核2号团队的代码后合并到自己远程库里
第五步:1号团队通过pull使用代码
github-分布式代码托管服务平台
2.1 操作github网站:https://github.com/,这网站很卡,正常还是用gitee吧,除非团队要用。
登录后创建远程仓库:
| 命令代码 | 作用 |
|---|---|
| git remote -v | 查看当前所有远程仓库地址别名 |
| git remote add 别名 远程仓库地址 | 给远程仓库地址起别名 |
| git push 别名/远程仓库地址 分支名 | push某分支内容到远程仓库该分支 |
| git clone 远程仓库地址 | 把远程仓库内容clone到本地 |
| git pull 别名 分支名 | 拉取远程仓库某分支最新内容来合并本地分支 |
为了保证效果,任何操作请在相应的文件夹内右键git bash here
clone操作=拉取代码+初始化本地仓库+创建别名
当然不是谁都能给远程库push东西的,能push的人要由远程库创建者
指定其加入该团队。
设置完后远程库创建者会得到一个该成员的邀请函链接:
把邀请函通过qq微信什么的给该成员,该成员打开那个链接,接受即可:
这样就可以推送代码了,无权限推送的话会报403错误:
公开库pull,clone是不需要权限的,push需要。
团队外的人需要先fork到自己的远程库:
自己的远程库里就有一个代码库了,并且有来自哪里的说明:
团队外人员修改代码后要发给团队内创建者一个pull request请求:
在团队内创建者的账号上就能看到一个pull request请求:
前面我们用的远程库链接都是https链接:
还有一个ssh链接:
为什么要搞这个,是因为之前每次push的操作都要登陆,很麻烦,用这个就不用登陆了,所以叫ssh免密登录。
但这个ssh链接不能直接用,要搞一个ssh的密钥:
在bash窗口输入: ssh-keygen -t rsa -C xxxx@xxxx.com
这个邮箱是库主的邮箱。
输入后一路回车,得到结果:
发现目录中多了个.ssh的文件夹,里面有公钥和私钥:
然后让库主把公钥添加到他的设置里就行了:
添加成功:
有些文件不需要pushpull等操作,比如用idea自带的.idea的idea设置文件等等,就要配置忽略文件。
忽略文件名叫xxx.ignore,推荐叫git.ignore,推荐放在家目录下:
git.ignore里建议配置忽略这些文件:
*.class *.log *.ctxt .mtj.tmp/ *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar hs_err_pid* .classpath .project .settings target .idea *.iml
然后在.gitconfig里配置上刚刚的git.ignore文件:
[user] name = coderhaoSYS email = 1198234865@qq.com [core] excludesfile = C:/Users/user-lihao/git.ignore2.2.2 idea里设置git程序路径
File-settings-version control-git
然后路径里就多了个.git文件,初始化好了:
2.2.3节操作后会发现文件是红的,说明没add到暂存区:
add到暂存区后就会变绿:
还有些文件是草绿色,说明是之前配置的忽略的文件,不会添加到暂存区。
- commit:
提交后的文件就会由绿变正常黑色:
切换头指针:
看到黄色指针变了,代码也变了:
head指到master的第一次提交,然后新建一个dev分支,然后改改代码,commit两次,,然后head切到dev first-commit可以看到:
从左边的分支中看得出来,2次的dev是从master的第一次commit上改的.看到master和dev分支都有一个绿色指针指向最新commit,黄色指针只有一个,代表当前代码所在分支和版本。
合并到哪个分支,就要在哪个分支上操作,比如要把dev合并到master上,就要head指针指到master上。
合并时代码冲突会跳出冲突框,点击merge手动合并:
合并后观察log,路线很形象:
由于push/clone/pull操作涉及到远程代码托管中心,所以需要github账号。
file-settings-version control-github:有账号密码和token两种登陆方式
token怎么来:
口令只显示一次,请妥善保存!:
settings里没有github就去安一个:
正常要先创建远程库,然后本地push上去,但idea功能强大,push的时候就能自动创建远程库,所以可以直接push操作,不创远程库。
而且push之前要先pull,确保最新,然后push。
以后再修改的代码就可以直接push:
push默认https,网络可能不畅通,建议用ssh:
push设为ssh:
国内的代码托管平台
网址:https://gitee.com/
注册个账号就行了。
使用:
操作和github类似。
或者提前创建远程库,然后配好https/ssh,再push也行。
配个gitee的https/ssh链接:
注意选择gitee的相关库地址:
和github类似,不演示
3.2.5 github项目迁移到giteegitee新建仓库页面下面:
github的原项目更新了,如果想更新gitee的相同项目,可以点刷新按钮:
使用MIT许可证的基于网络的git仓库管理工具。
官网:https://about.gitlab.com/
安装说明:https://about.gitlab.com/install/
安装需要一台linux服务器环境:
这里参考centos7的安装说明,安装gitlab-ce社区版,企业版gitlab-ee要收费。
官网安装说明:https://about.gitlab.com/install/#centos-7
官网安装文档:https://docs.gitlab.com/ee/install/
初始化命令:
gitlab-ctl reconfigure4.2.3 启动gitlab服务
启动命令:
gitlab-ctl start4.2.4 访问gitlab服务器
直接访问ip地址即可,端口号默认80,就是gitlab的端口号。
一开始要改密码,改的是root账号的密码:
登陆后进首页:
操作和gitee还有github差不多,这里不赘述了。
push,pull,clone,commit等操作和之前github,gitee一样,不再说了。
这个url使用ip就行了,下图中是因为windows的host中配过域名。



