一. 简介
-
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
-
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
通过Git可以完成:
- 代码管理
- 版本控制
- 团队协作
二. Git 常用命令
退出
- Esc键,shift+":",wq
- q
1. 设置用户签名
签名的作用就是用来标识用户,以区分不同的开发人员
- C盘下——>用户——>裴——> .gitconfig(记事本打开)
可以看到:
2. 初始化本地库
我们希望一个文件夹被
git管理的话,那么就要在一个文件夹下进行 git 初始化找到一个希望被
git管理的文件夹在文件夹内单击鼠标右键,点开
Git Bash Here输入指令
# git 初始化的指令 $ git init
然后文件夹内会多一个
.git的文件夹(这个文件夹是一个隐藏文件夹)这个时候,我的这个
git_demo文件夹就被git管理了
git不光管理这一个文件夹,包括所有的子文件夹和子文件都会被管理
注意: 只有当一个文件夹被 git 管理以后,我们才可以使用 git 的功能去做版本管理
- 也就是说,我们必须要把我们电脑中的某一个文件夹授权给
gitgit才能对这个文件夹里面的内容进行各种操作- 而
git init就是在进行这个授权的操作
3. Git的工作区,暂存区,版本库,托管平台
不用联网(本地电脑)
- 工作区
- 版本库
.git
- 暂存区
- master
联网
- 托管平台
- 局域网(内网,公司内部使用)
- gitlab
- 公网(外网)
- gitlab
- github
- gitee 码云
4. Git 提交命令
git add (提交到暂存库)
把工作区的文件往暂存区拷贝了一下
我们要放入暂存区,要使用
git add指令把单独一个 文件 放在暂存区
# 把文件夹下的 index.txt 文本放在暂存区 $ git add index.txt把单独一个 文件夹 放在暂存区(暂存区不能存放空文件夹)
# 把文件夹下的 ceshi文件夹 放在暂存区 $ git add ceshi/把 所有文件 都放在暂存区
# 把文件夹下所有的内容都放在暂存区 $ git add --all # git add --all 有一个简单的写法 $ git add . (自动区分哪个文件修改了,会把修改的文件添加到暂存区)
- 全部存放的时候使用上面两个指令哪个都行
git status查看此时目录下的状态
git rm --cached 1.txt把文件从暂存区删除
- 然后可以再
git status查看是否删除成功(红色)
git commit (暂存区提交到历史区master)
# 把暂存区的内容放到历史区
$ git commit -m "我是第一个版本"
我们使用
git log这个指令查看版本信息(指针往下,也就是现存的记录)# 查看当前历史区版本信息 $ git log我们使用
git reflog这个指令查看所有的操作记录# 查看当前历史区版本信息 $ git reflog
git reset --hard (硬回退)
我们使用
git reset --hard 版本编号进行历史回退# 回退到上一次提交的版本 # 就是把hard HEAD这个指针指到你回退的版本 $ git reset --hard HEAD^ # 回退到上上次提交的版本 $ git reset --hard HEAD^^ $ git reset --hard HEAD~2 # 如果后悔回退了,那就 $ git reset --hard 504b513(操作码前六位)>
git reset --soft (软回退,推荐)
可用于“注释修改”,“bug修复”...
git revert HEAD "注释" (推荐)
- git reset 是回滚到对应的commit-id,相当于是删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录,如果要推送到远程服务器的话,需要强制推送-f
- git revert 是反做撤销其中的commit-id,然后重新生成一个commit-id。本身不会对其他的提交commit-id产生影响,如果要推送到远程服务器的话,就是普通的操作git push就好了
三. 使用 Git 做分支管理(离线状态下)
1. 初识分支
git分支,就是我们自己把我们的整个文件夹分成一个一个独立的区域比如我在开发 登录 功能的时候,可以放在
login分支下进行开发
- 开发 列表 功能的时候,可以放在
list分支下进行开发- 大家互不干扰,每一个功能都是一个独立的功能分支
这样开发就会好很多
git在初始化的时候,会自动生成一个分支,叫做master是表示主要分支的意思
我们就可以自己开辟出很多独立分支
2. 分支操作总结
git branch name创建分支git branch可以查看当前处于哪个分支中,以及所有分支列表- 前面有个
*号,并且有高亮显示的,表示你当前所处的分支
- 前面有个
git checkout login切换到login分支
然后我们在整个分支上进行 登录 功能的开发
开发完毕以后,我们就在当前分支上进行提交
提交以后我们进行分支切换
- 发现
master上面还是最初始的状态- 而
login分支上有我们新写的 登录 功能的代码我们按照分支把所有功能都开发完毕了以后
- 只要把所有代码都合并到
master主分支上就行了
git merge login合并分支(与切换搭配使用)
# 切换到 master 分支 $ git checkout master # 把 login 的内容合并到自己的分支 $ git merge login
这个时候,我们刚才在
login上开发的东西就都来到了master主分支上如果是有多个分支的话,那么所有的最后都合并到
master分支上的时候我们的主分支上就有完整网站的所有页面
- 各个分支上都是单独的页面和功能
git branch -d name删除分支
这个时候我们合并了之后,开辟的分支就没有什么用了,就可以删除分支了
# 先切换到别的分支 $ git checkout master # 删除 login 分支 $ git branch -d login
四. Git 团队协作
1. 新建仓库
2. 操作命令
仓库
git remote add origin 仓库地址添加仓库地址git remote -v查看仓库变量和地址git remote remove origin删除仓库地址
上传
- 我们使用
git push指令来上传# 上传内容 $ git push -u origin master # 表示把内容上传到 origin 这个地址 # master 是上传到远程的 master 分支
- 如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。
拉取(用于更新)
- 如果在远程库修改了,想同步给本地,就使用这个来拉取到本地
git pull# 拉取远程最新代码 $ git pull # 写过-u的话,这里就可以简写了
克隆
- 给一个仓库地址,可以把所有文件克隆一遍
git clone 仓库地址
删除远程分支
git push origin :分支名- 让空去覆盖,也就是删除
跨团队协作
.gitignore
- 如果有的文件(比如nodemoudle,或者一些测试文件等等),你修改了但是并不想上传到远程库提交,那就新增一个
.gitignore文件,把你不需要上传的文件或文件夹名放上去- 最后你这个文件里写的文件不会被上传,
.gitignore会被上传- 但是如果这个文件已经被你存到暂存区,你再往
.gitignore里写是没有用的