版本控制工具,可以大体分为下面两种:
a.集中式版本控制工具,代表有SVN特点:有一个单一的集中管理的服务器,保存所有的文件修订版本,而协同的所有人员都通过客户端连接到这台服务器,取出最新的文件或者提交更新。
缺点:中央服务器的单点故障。如果服务器宕机一个小时,那么在这一个小时内,谁都无法提交更新,也就无法协同工作
b.分布式版本控制工具,代表有Git特点:客户端提取的不是最新版本的文件快照,而是把代码仓库完整的镜像下来(也就是本地库)。每个客户端每一次文件提取工作,实际上就是一次对整个文件仓库的完整备份。这样任意一处协同工作的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。克服了集中式版本控制工具的缺点
2.代码托管中心代码托管中心是基于网络服务器的远程代码仓库,一般称为远程库
a.互联网- GitHub
- Gitee
- GitLab(如果代码不想开源,可以自己搭建GitLab远程服务器)
(官网地址:https://git-scm.com/,如果下载很慢可以找下国内镜像)
2.Git 工作机制工作区----git add----> 暂存区----git commit---->本地库----git push---->远程仓库(origin)
3.Git常用命令-
初次安装git配置用户名和邮箱
git config --global user.name 用户名
git config --global user.email 邮箱
注意:初次安装git需要配置用户名和邮箱,否则git会提示:please tell me who you are. 此用户名和邮箱是git提交代码时用来显示你身份和联系方式的,并不是github用户名和邮箱
- 初始化本地库(本地建立一个新项目想使用git,就需要在新项目目录下初始化生成一个.git文件夹)
git init
- 查看本地库状态
git status
- 添加到暂存区
git add 文件名
- 提交到本地库
git commit -m "提交信息"
- 查看历史版本信息(精简版):
git reflog
- 查看历史版本信息(详细版):
git log
- 回滚到特定提交的版本号:
git reset --hard 版本号
- 回滚1个版本:
git reset --hard HEAD~1
- 将修改存储到暂存区,工作区会删除这些修改:
git stash
- 从暂存区取出修改的部分:
git stash pop
4.Git分支 a.概述在版本控制中,同时推进多个任务,为每个任务,可以创建每个任务的单独分支(分支的底层其实也是HEAD指针的引用)
b.分支的操作命令- 创建分支
git branch 分支名
- 查看分支
git branch -v
- 切换分支
git checkout 分支名
- 把指定的分支合并到当前分支上(切换到当前分支)
git merge 指定分支名
c.手动解决冲突- <<<<<<
表示当前分支改动代码
- ====== 代码2 >>>>>>合并分支
表示要合并分支的代码改动
解决方案:手动解决冲突一般保留当前分支改动的代码,不过这个要看情况而定
5.Git 团队协作机制 a.团队内协作:需要在远程仓库(仓库1远程github账号)中邀请本地仓库2的github账号:远程repo-->settings-->manage access-->invite a collaborator-->输入仓库2的github账号
b.跨团队间协作(这个是我日常工作中采用的) 三、GitHub操作 1.推送本地到远程库 a.创建远程库,库名一般和本地库一致 b.远程仓库操作
- 查看当前所有远程仓库地址别名
git remote -v
- 为远程仓库地址起别名
git remote add 别名 远程地址
- 推送本地分支上的内容到远程仓库
git push 别名 分支
- 将远程仓库的内容克隆到本地
git clone 远程地址
注意:clone实际会做三个动作:1.拉去远程代码 2.初始化本地仓库 3.创建别名
- 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
git pull 远程库地址别名 远程分支名
2.SSH免密登录git支持https和git两种传输协议,使用https协议,每次pull, push都会提示要输入密码,使用git协议,即使用ssh密钥,这样免去每次都输密码的麻烦
a. 生成密钥对SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。先删除原先的文件
rm -rvf .ssh
生成密钥,一路下来都是按回车
ssh-keygen -t rsa -C "your_email@youremail.com"
b.添加公钥到你的远程仓库(github)- 查看你生成的公钥
cat ~/.ssh/id_rsa.pub
- 登陆你的github帐户
点击你的头像,然后 Settings -> 左栏点击 SSH and GPG keys -> 点击 New SSH key
- 复制上面的公钥内容,粘贴进“Key”文本域内,title域,自己随便起个名字
- 点击 Add key
与项目实际功能无关,不参与服务器上部署运行
b. 如何忽略创建忽略文件.gitignore,这个文件理论上可以随意放置,建议放在项目目录下,即本地仓库下
2. IDEA中添加Git(mac的pycharm为例).gitignore文件模板内容:
wayang_fulltest_common.gitignore"
Pycharm --> Preference --> Version Control --> Git -->在Path to Git executable中添加安装的git路径
3. IDEA中初始化本地库(就是出现.git文件夹)VCS(version control settings) --> import into Version Control --> Create Git Repository
4. 其他操作都是和本地git是一样的 五、IDEA集成GitHub 1.IDEA中添加GitHub(mac的pycharm为例)Pycharm --> Preference --> Version Control --> GitHub(如果没有则在Plugins中搜索安装GitHub) -->点击+进行添加GitHub的账号和密码(一般账号和密码登录比较困难可以点击右上角的token)
生成token方法:GitHub的账号settings-->Developer Settings --> Personal access tokens --> Generate new token --> Note中随便写,下面所有的方框都勾选上 --> Generate token --> 复制token值
2. 将IEDA中的项目分享到GitHub上VCS(version control settings) --> import into Version Control --> Share Project on GitHub --> Repository name:一般和本地库名一样;Remote:起别名
3. 在IDEA中clone代码打开pycharm(不要打开任何项目)--> Get from Version Control --> 添加远程ssh链接即可clone
4. 其他远程操作都是和GitHub一样的 六、IDEA集成码云Gitee 1.IDEA中添加Gitee(mac的pycharm为例)Pycharm --> Preference --> Version Control --> Gitee(如果没有则在Plugins中搜索安装Gitee) -->点击+进行添加Gitee的账号和密码(一般账号和密码登录比较困难可以点击右上角的token)
2. 将IEDA中的项目分享到Gitee上VCS(version control settings) --> import into Version Control --> Share Project on Gitee--> Repository name:一般和本地库名一样;Remote:起别名
3. 其他远程操作如上GitHub 4. 码云导入GitHub项目a.在码云上新建一个仓库,最下面有个导入已有仓库,将ssh链接输入即可导入
b.如果GitHub项目有更改,码云上直接点击仓库后的更新按钮即可更新
七、自建代码托管平台-GitLab


