一、常见的版本控制系统
(一)svn 集中式版本管理系统;
(二)git分布式版本管理:工作区、暂存区、历史区
SVN和Git的区别?
(一)SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器,集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。
(二)Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网,因为版本都在自己电脑上,协同的方法是这样的:
比如自己在电脑上改了A文件,其他人也在电脑上改了A文件,这时候,你们两之间只需要吧各自的修改推送给对方,就可以互相看到对方的修改,Git可以直接看到更新了哪些代码和文件
Git环境配置
打开官网下载、但是下载慢的话,我们可以去使用淘宝镜像下载
卸载与安装
卸载: 直接反安装即可,然后清理环境变量;安装: 无脑下一步即可!安装完毕就可以使用了
二、常见命令
查看配置 git config -l
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
Git相关的配置文件:
1)、Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级
2)、C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置 --global 全局
1、初始化一个仓库—进入到你要进行版本管理的文件夹里面
git init
2、配置个人信息
#个人名称
git config --global user.name 'xxx'
#个人邮箱
git config --global user.email 'xxx@xxx.com'
3、从工作区提交到暂存区
git add . #提交全部文件
git add -A #提交全部文件
git add <files> #指定提交的文件
4、从暂存区提交到历史区 ------注意:如果没有-m
的选项,就会进入 vim
编辑器进行相关信息编写
git commit -m '提交的相关信息'
注: 红色代表在工作区 绿色代表在暂存区
5、查看提交的历史版本
git log #查看详细的提交信息
git log --oneline #查看精简的历史信息
6、切换历史版本
git reset --hard 版本标识符
其他命令
①查看文件内容:cat 1.txt
②新建:touch 1.txt
③查看当前状态:git status
④给文件添加内容vim 1.txt
⑤回滚:git restore --staged x
三、Git工作流程
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
日常使用流程:
文件的四种状态:
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
# git add . 添加所有文件到暂存区
# git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
设置本机绑定SSH公钥,实现免密码登录!(免密码登录,这一步挺重要的,码云是远程仓库,我们是平时工作在本地仓库!)
ssh-keygen -t rsa
思维导图
注意:添加本地项目与远程项目关联使用git remote add “origin” (远程库的ssh协议)
免密操作没起效
若没有成功=>解决:
IDEA集成Git
忽略文件
有些时候我们不想把某些文件纳入到版本控制中,比如数据库文件,临时文件、设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
四、GitHub使用
1、创建仓库
2、提交远程仓库【第一次提交需认证】
一定要记得从历史区提交
git push 远程仓库的地址 master
注意: 提交到远程的时候,先将本地的代码提交到本地地历史区
3、从远程拉取【远程同步代码】
git pull 远程仓库的地址 master
问题:在第二次提交的时候,可能出现下图问题:
原因分析:
通过查看提示信息,我发现,是因为本地仓库和远程仓库的文件不一致所致,也就是GitHub允许本地有的东西,远程仓库里没有
解决方案:
在push提交之前先同步一下本地仓库与远程仓库的文件,使用以下命令:
git pull --rebase 远程仓库地址 master
成功后提示如下图:
设置秘钥:
ssh-keygen -t rsa -b 2048 -C “地址”
接下来就可以继续push自己的代码,进行提交了
4、条件东西到别人仓库(提交作业)
①首先打开别人的仓库找到对应的—点击右边的Fork拉取–然后跳转到自己仓库–
②随便找个文件夹打开git–输入 git clone 远程地址 master—克隆完成后进去创建自己的文件–依次开始提交暂存区-历史区-git pull 远程仓库的地址 master–自己仓库有了
③提交到老师那:打开自己的GitHub—按下Pull requests–点击右边的新建–点击右边的create pull request—进去继续点create pull request
fork --> Pull requests
- fork 某个项目
- 回到我的 github 就可以看到 fork 过来的项目
- 把这个项目 clone 下来
git clone https://github.com/"you"/"you repositries"
- 接下来就可以进行相应的操作了
- 把修改的文件再提交到 github (注:提交之前先提交到本地历史区)
- 回到 github 发起 Pull requests
五、码云使用
(一)先git clone 项目地址【把项目拉到本地】
(二)git add .
(三)git commit -m ‘本次提交的注释’
(四)git push【项目内容被成功推到码云上】