1.Git介绍
Git是一个开源的分布式版本控制系统,用于敏捷搞笑的处理任何或小或大的项目
- 版本控制
- 是一种开发过程中用于管理我们对文件,目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术
- 团队协作
- 从单兵作战到团队开发
Git bash安装好之后可以学习以下内容
2.设置用户签名
签名的作用就是用来表示用户,区分不同的开发人员
git config --global user.email "用户的邮箱" git config --global user.name "用户名" //加了global就表示全局配置,以后不管在哪个文件下都不需要标识用户 //在C盘的用户文件夹下或NET文件夹下有一个.gitconfig文件, 用记事本打开它可以看到git bash的配置
初始化本地库
cd 文件夹
进入想将文件夹变成git授权管理的文件夹
git init
执行了命令之后当前文件夹下会出现一个.git的隐藏文件夹,
.git是用来记录所有的版本,代码修改的越多提交的越多版本越多.git就会越来越大
简而言之:.Git是版本库
ls -a
查看当前文件夹下所有的文件,包括隐藏文件
Git工作区,暂存区和版本库
3.暂存区
vim 文件
开始对文件进行编辑
进入编辑页首先按i,左下角会出现insert表示可以开始对文件进行修改
修改完毕后按ESC,然后按shift + : 可以把冒号敲出来,
冒号出来再输入wq,表示写并退出(保存修改并退出)
cat 文件
可以查看文件里面的内容
//把文件夹下的index.txt文件放入暂存区
git add index.txt
//把文件夹下的ceshi文件夹放入暂存区
git add ceshi/
//把文件夹下所有的内容都放在暂存区
git add --all
git add . ==》 是git add --all的简写
//查看目录下的状态
git status
//将文件从暂存区移除
git rm --cached 文件名
4.版本库也叫历史区( master)
//将暂存区的内容放到历史区
git commit -m '这里可以写文件注解'
如果没有加-m则会直接进入vim页面,它一定要你对此次提交写一个注解
//查看当前历史区版本信息
git log
//查看所有版本记录
git reflog
//版本历史回退
git reset --hard 版本编号
git reset --hard HEAD^回退上一个版本
git reset --hard HEAD~2回退上上次提交的版本
--hard 是将文件从历史区直接回到了工作区
--soft 将文件从历史区回到暂存区
git reset 是回退到对应的版本,版本记录会被清除,相当于删除了commit的提交
git revert 是撤销对应的版本,旧版本不会删除然后重新生成一个commit,不会对其他的版本造成影响
git reset --hard HEAD 回退当前版本(不会进行变动)
git revert HEAD 撤销当前版本,回到上一个版本(会生成新的commit)
5.创建分支
- master通常作为主分支,git初始化时会自动生成,分支就是把我们整个文件夹分成一个一个独立的区域
- 比如我们在开发登录功能的时候可以项目备份一份放在login分支下进行开发
- 开发列表功能的时候,可以放在list分支下进行开发
- 大家互不干扰,每一个功能都是一个独立的功能分支
//查看分支
git branch
git branch -a 查看所有分支
//创建分支
git branch 分支名
//切换分支
git checkout 分支名
//删除分支
git breanch -d 分支名
-d 是delete的缩写
//合并分支
git merge 分支名
现在有两个分支 一个master主分支 一个login分支
首先切换到主分支
git checkout master
把login的内容合并给自己的分支
git merge login (login上开发的东西都备份了一份在mester主分支上)
其实就是把HEAD的指针同时指向了master和login,这样两个分支的内容都会同时出现在工作区从而达到"合 并"效果
//合并冲突
情况:有两个分支master和login,每个分支下都有一个utils文件,当两个文件的内容被修改或内容不一样时去合并分支的就会合并失败,
这个时候命令行分支显示就会变成(master)变成(master|login)
这种情况就要开发者自己去工作区查看utils文件,里面会出现当前分支更改的内容和另一个分支的内容,开发者要在工作区对utils进行处理保留自己想要的内容,
处理后再重新提交即可,命令行分支显示也会从(master|login)变成(master)
6.团队协作
A和B在同时开发一个项目,A把项目上传至远程仓库(更新)了B也要及时(更新)拉取代码
建立连接和推送至远程仓库
//与远程仓库进行连接
git remote add origin 仓库地址
origin可以改成其他内容,origin是默认的(origin可以理解为给远程仓库起的名字(备注))
//查看当前建立连接的远程仓库地址
git remote -v
//移除仓库
git remote remove origin(仓库名)
//将内容发送到远程仓库
git push add origin master:master
git push -u origin master
git push -f 强制推送(会覆盖掉仓库的代码:很威胁)
-u表示记录,让这次推送的地址变成默认地址
git push 推送至仓库,这里没有写仓库地址是因为设置已经设置过默认的地址了
(git push 仓库名 分支名)
从远程仓库拉取文件和仓库克隆
//从远程仓库拉取代码
git pull origin master
//拉取代码时出现的合并冲突问题
情况:远程仓库的文件被修改了,本地的文件也修改了,当我们从仓库拉取代码时因为两方的文件版本不同步出现了合并冲突,这时就需要开发者手动修改文件内容保留想要的删除不需要的或都保留
修改完毕之后再重新 add commit 上传
//克隆
git clone 仓库地址链接
clone和pull的区别
clone是将整个仓库克隆一份到本地,pull可以拉取项目最新的更新
可以克隆别人公开的仓库,也可以克隆自己的仓库
克隆别人的仓库我们只能拿下来,修改后不能重新上传(对方没有开权限)
克隆自己的仓库,我们修改后还可以再次上传更新
团队协作的分支管理
未完待续...........