Git
Git概述
Git是一个免费的、开源的 分布式版本控制系统 ,可以快速高效的处理从小型到大型的各种项目。
为何要使用git
从个人开发过渡到团队协作,就像下图一样,如果小红和小蓝都对同一份代码进行了修改,那么最后合并的工作就可以交给git
Git工作机制
在工作区和暂存区不会产生历史记录,提交到本地库后会生成历史记录
Git常用命令
| 命令 | 作用 |
|---|---|
| git config --global user.name 用户名 | 设置用户名 |
| git config --global user.email 邮箱名 | 设置邮箱 |
| git init | 初始化本地库 |
| git status | 查看本地库状态 |
| git add 文件名 | 添加到暂存区 |
| git commit -m '日志信息' 文件名 | 提交到本地库 |
| git reflog | 查看历史版本记录 |
| git reset --hard 版本号 | 版本穿梭 |
注:这里设置的用户名和邮箱是本地的,与githup无关
查看本地库状态
使用 > git status 命令查看本地库状态,如果文件名为红色,则说明文件现在属于工作区,还未添加到暂存区。
当使用 git add 命令添加到暂存区后,此时的文件名会为绿色,说明文件处于暂存区,还未添加到本地库。
在暂存区的文件如果想删掉,可以使用以下命令:
git rm --cached 文件名 //这条命令只是删除暂存区的缓存文件,与工作区的文件无关
当使用git commit 命令后,会添加到本地库,在查询时没有显示之前的文件,说明添加成功了。
git add . //当输入这个命令时,可以添加所有文件,而不需要一个一个添加
Git分支
分支常用命令
| 命令 | 作用 |
|---|---|
| git branch 分支名 | 创建分支 |
| git branch -v | 查看分支 |
| git checkout 分支名 | 切换分支 |
| git merge 分支名 | 把指定的分支合并到当前分支上 |
分支的概念
在版本控制过程中,同时推进多个任务,为每个任务可以创建单独的分支。使用分支可以让程序员把自己的工作从主线上分离开来,开发自己的分支的时候,不会影响主线分支的运行。(分支底层也是对指针的应用)
分支的好处:
1. 可以同时推进多个功能的开发,提高开发效率
2. 各个分支的开发过程中互不干扰,如果一个分支开发失败,不会影响其他分支。失败的分支删除重新开始即可。
合并冲突
当两个地方修改了同一份文件时容易出现代码冲突,此时就需要人手动来解决,解决步骤:
- 先去发生冲突的文件里把不需要的代码删除掉并保存。
- 使用
git add .命令把修改后的文件提交到暂存区。 - 使用
git commit -m ‘日志信息’把文件提交到本地库,注意:此时的代码不能带有文件名
vim里保存要使用 :wq命令
githup操作
常用远程库命令
| 命令 | 作用 |
|---|---|
| git remote -v | 查看所有远程地址别名 |
| git remote add 别名 远程地址 | 创建别名 |
| git push 别名 分支 | 推送本地库到远程库 |
| git clone 远程地址 | 克隆远程仓库 |
| git pull 远程库地址或别名 远程分支名 | 将远程库的内容拉取下来与本地合并 |
其他操作
下载仓库里某个子文件
我们在使用Git clone 码云gitee仓库中的代码时,不管是clone或下载压缩包,默认都会clone目标仓库的所有文件,如果我们只需要或者只想要获取其中的某个文件夹时,下载全部无疑浪费了我们的时间和精力,使用此方法可以只下载单个文件夹或者文件
步骤:
-
初始化仓库
git init -
设置允许clone子目录
git config core.sparsecheckout true -
设置需要下载的文件(把下面的‘文件名'换成需要clone的文件,注意不要删除*号)
echo '文件名*' >> .git/info/sparse-checkout -
设置远程库别名,方便下载
git remote add 别名 远程库地址 -
执行拉取操作
git pull 别名 分支
至此,就可以做到只克隆直接需要的单文件,而不需要克隆整个仓库了。