什么是分布式版本控制工具和集中式版本控制工具?集中式版本控制工具的版本库是存放在中央服务器的,团队中的每个人工作的时候都需要从中央服务器中下载代码,需要连接互联网,个人修改后需要推送至中央服务器,比如SVN版本控制工具。分布式版本控制工具则没有中央服务器器这一说,每个人的电脑都是完整的版本库,不需要联网,只需要把个人修改的推送给对方即可,比如git。
首先从远程下载代码,然后切换成自己的分支(如果需要的话),然后开始编写代码,编写好代码之后把修改/添加的部分加载到暂存区,之后提交到本地仓库,如果需要上传到远程仓库,上传之前则要拉取一下最新的代码(团队其他人可能已经上传了代码),如果代码冲突了需要和团队进行协商解决冲突 ,之后再推送到远程仓库。
下载地址:Git - Downloadshttps://git-scm.com/download
根据自己电脑系统的类型进行下载,然后双击即可进行安装
安装git之后首先要做的事就是设置用户名和邮箱地址,之后的每一次提交都会使用到该信息。打开git bash 进行配置
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
git init
在电脑任意空白目录打开git bash输入git init创建一个本地仓库,创建成功后,则会看见一个.git目录(要显示隐藏目录)
在git工作目录下对文件进行修改(包括增删改文件),这些都会改变git工作状态
1.git add 文件名/通配符 -->把文件从工作区加入到暂存区
2.git commit -m '修改描述' -->把文件提交到本地仓库
git status
如果是修改已有的文件,状态则是unstaged(未暂存);如果是新建的文件,状态则是untracked(未跟踪)
git log [options]
options:
--all 显示所有分支
--pretty=oneline 提交信息显示为一行
--abbrev-commit 使commitid更为简短
--graph 以图的形式显示
自定义git命令,使用命令打开~/.bashrc文件,和linux系统命令一致,vim ~/.bashrc
定义一个简单的查看日志命令:
alias git-log = 'git log --pretty=oneline --abbrev-commit --all --graph'
1.查看本地分支
git branch
2.创建本地分支
git branch 分支名称
3.切换分支
git checkout 分支名称
4.切换到一个不存在分区(创建并且换)
git checkout -b 分支名称
5.合并分区
git merge 分支名称
6.删除分支
(1)git branch -d 分支名称(删除时需要做各种检查)
(2)git branch -D 分支名称(强制删除)
1.回滚版本
git reset --hard 版本id
2.查看删除记录
git reflog
Git远程仓库可以借助代码托管平台实现,其中最常见的就是github平台,也有gitlab和gitee,github是用户和使用频次最多的平台,但是github服务器在国外,访问速度不佳,gielab需要自己搭建,所以本文采用gitee(码云)作为例子进行搭建远程仓库。
1.生成ssh公钥
输入:ssh-keygen -t rsa
然后不断按回车即可
2.获取生成的公钥
cat ~/.ssh/id_rsa.pub
验证公钥是否配置成功:
ssh -T [email protected]
出现:
You've successfully authenticated, but GITEE.COM does not provide shell access.
则配置成功
git remote add <远程名称> <仓库路径>
远程名称:默认是origin,可更改为其他名字
仓库路径:从远程仓库中可以获取
例如: git remote add origin https://gitee.com/badbadman/test.git
git remote
命令:git push [-f] [--set-upstream] [远程名称 [本地分支名][:远端分支名]]
如果远程分支名和本地相同则可以只写本地分支名
-f 可选参数,表示强制覆盖
--set-upstream 推送到远程仓库同时建立起远程分支的关联关系,之后直接使用git push即可
git branch -vv
1.克隆仓库
git clone 远程仓库地址
2.远程仓库抓取
git fetch [远端名称] [分支名称] 如果不指定名称和分支,默认抓取所有分支
3.合并本地和远端分支(远程分支也是一个分支)
git merge 远程分支名称
4.拉取远程仓库
git pull [远端名称] [分支名称] -->相当于抓取后自动合并,等同于fetch和merge