公司最近推代码管理由SVN到Git 的迁移,先从入门开始补补课!
目录
1.Git是目前世界上最先进的分布式版本控制系统(没有之一)。
一、Git简介
1.Git是目前世界上最先进的分布式版本控制系统(没有之一)。
2.Git优点
- 分支切换速度快(一个分支可以理解为一个版本)
- 容量小(极致的压缩)
- 简单的设计
- 完全分布式(去中心化)
- 对非线性开发模式的强力支持(允许上千个并行开发的分支)
- 有能力高效管理类似Linux内核一样的超大规模项目
3.工作原理
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
二:SVN与Git的主要区别
- SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
- Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
三.Git工作流程
1.仓库间操作
- Clone:克隆,就是将远程仓库复制到本地;
- Push:推送,就是将本地仓库代码上传到远程仓库;
- Pull:拉取,就是将远程仓库代码下载到本地仓库。
2.个人工作流程
- 从远程仓库中克隆代码到本地仓库(git clone );
- 从本地仓库中checkout代码然后进行代码修改(git checkout);
- 在提交前先将代码提交到暂存区(git add);
- 提交到本地仓库,本地仓库中保存修改的各个历史版本(git commit);
- 修改完成后,需要和团队成员共享代码时,将代码push到远程仓库(git push)。
四.Git安装
1.GitLab 平台账号注册
-
认证登录GitLab代码托管平台:https://gitlab.xxxxxx.com/
-
公司采用双因子认证,在此不多赘述。
2.生成access token
- 因为采用双因子认证所以需要生成个AccessToken作为后续认证的密码;
- 路径:右上角个人 -- Setting -- Access Tokens;
- 填写name和scopes(权限可全部勾选),点create 在最上方Your new personal access token下生成token,需个人保存,作为用户密码去拉取代码;
- access token可设置多个,忘了也可以登录Gitlab后重新生成新的。
3.本地安装Git客户端(安装包在最后)
- 网上找个安装包,安装后鼠标右击,如图会多出两个可选项:
Git GUI ---Git提供的图形界面工具
Git Bash ---Git提供的命令行工具
4.创建远程仓库(有可用仓库可跳过)
- 登陆GitLab平台,在对应groups下新建一个项目,填写项目名称及描述;
- 创建项目成功后,在侧边栏Memeber中添加项目成员并分配相应的角色
5.本地环境配置
- 安装Git后首先要做的事情是设置用户名称和email地址,因为每次Git提交都会使用该用户信息
设置用户信息,Git Bash >>执行:
$ git config --global user.name “xxxxx”
$ git config --global user.email “xxxxxxx@xxx.com”
-
查看配置信息:
$ git config --list
$ git config user.name
- 生成并添加ssh key(公司平台貌似不支持ssh方式,简单搬运)
ssh指secure shell(一种安全的网络协议),git使用这种协议进行远程加密登录。
ssh登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在git中一般分别命名为id_rsa.pub, id_rsa
ssh方式单独使用非对称的秘钥进行认证和加密传输,和账号密码分离开来,不需要账号也可以访问repo。
git基于多种传输协议,其中最常用的就是https和ssh。都是为了数据传输安全,那么设置ssh密钥的目的是为了节省输入用户名密码的过程,同时保证传输安全,并不是必须设置。
Git Bash >> cd 到C盘用户文件夹.ssh文件夹中,没有就新建个,执行命令(xxxxxxxx@xxx.com换成你的邮箱):
$ ssh-keygen -t rsa -C“xxxxxxxx@xxx.com”
ssh-keygen -t rsa -C“xxxxxxxx@xxx.com”
然后.ssh里面会生成两个文件:id_rsa和id_rsa.pub,去git平台,右上角个人 - Settings - SSH Keys,将id_rsa.pub中的文件内容粘贴进去,起个名,设个有效期,点add key,配置完成。
五.克隆远程仓及常用操作
1.Git Bash 命令行克隆远程仓及常用操作
##克隆远程仓到本地##
$ git clone <url> #url --远程Git仓库地址,通常下一步是弹窗账密认证
$ git clone http://<ldap账号>:<accesstoken>@gitlab.it.taikang.com/taikanglife/coredep/ybt/ybtapp.git #url中带上账密认证
##常用本地仓操作##
$ git status #查看文件状态
$ git status –s #使输出信息更加简洁
$ git checkout -- filename #撤回工作区未添加到暂存区的修改部分
$ git add #将未跟踪的文件加入暂存区
$ git reset HEAD <file> #将暂存区的文件取消暂存,重新放回工作区
$ git commit -m "commit message" #将暂存区的文件修改提交到本地仓库
$ git rm #删除文件
##常用远程仓操作##
$ git remote #查看远程仓库
$ git remote add <shortname> <url> #添加到远程仓库
$ git clone <url> #从远程仓库克隆
$ git push <remote-name> <branch-name> #推送到远程仓库
$ git remote rm #移除无效的远程仓库(只是从本地移除远程仓库的记录,并不会真正影响到远程仓库)
$ git fetch #从远程仓库获取最新版本到本地仓库,不会自动merge
$ git pull #从远程仓库获取最新版本并merge到本地仓库
$ git branch --set-upstream-to origin/master master #将本地分支与远程分支关联
##其他操作##
$ git log #查看操作记录
$ git log --pretty=oneline #查看操作记录(单行显示)
$ git log --graph --pretty=oneline --abbrev-commit #查看分支合并记录
$ git branch #列出所有分支,当前分支前面会标一个*号
$ git branch <branch_name> #创建dev分支
$ git checkout <branch_name> #切换到dev分支
$ git checkout -b <branch_name> #以上两个命令合并,创建并切换到dev分支
$ git merge <branch_name> #合并指定分支(dev)到当前分支
$ git merge --no-ff -m "merge with no-ff" <branch_name> #Git合并默认用Fast forward模式,该模式下,删除分支后会丢掉分支信息,看不到合并记录,所以添加 --no-ff禁用该模式,后面添加合并提交信息
$ git branch -d <branch_name> #删除dev分支,-D为强行删除
$ git stash #隐藏当前工作区的修改部分,可用来处理突发工作并提交
$ git stash list #隐藏部分查看
$ git stash pop #恢复隐藏部分到工作区,并删除隐藏部分,另一种情况是用git stash apply恢复,但是恢复后stash内容并未删除,需要用git stash drop来删除
$ git stash apply stash@{0} #可以多次stash,恢复时,先用git stash list查看,然后恢复指定的stash
$ git cherry-pick <commit_id> #复制一个特定的提交到当前分支,同样适用于处理突发工作并提交
2.IDEA/WebStrom Git配置常用操作
- Git插件安装及配置
File – Setting – Piugin ,一般默认会有该插件,去已安装里找出并启用即可,没有就安装一个(放了2020.1-2020.1.4 版本区间的插件离线安装包在最后)。
File – Setting – VersionControl – Git 配置本地客户端安装路径。
- 克隆远程仓到本地
菜单栏 – VCS – Get from Version Control :填写远程仓路径及克隆到的本地文件路径;
点击克隆会弹出首次认证,填写OA账号及密码(生成的AccessToken);
认证成功后克隆远程仓到本地作为本地仓,右键有Git常用操作。