一、安装
二、配置
1. 配置个人账号
查看配置命令git config
账号配置分三个层级
--system --global --local
一般使用--global层级
配置命令
账号名称:git config --global user.name your_name
邮箱账号:git config --global user.email your_email
2. 查看配置
~表示当前用户的目录位置
git config --global --list
3. 相关概念
工作区:working area,当前打开的项目
暂存区:在工作区添加文件,使用git add会将文件添加到跟踪识别信息中,等修改完之后,使用git commit会将相关所有文件提交到本地仓库中,暂存区提供了一个缓冲的作用
本地化仓库:local repository,提交代码后会提交到本地仓库,到此步骤实现本地的版本控制
远程仓库:remote repository,远程代码仓库,比如一些代码托管平台github、gitlab、gitee,将代码提交到远程仓库可以方便团队协作,可以实现中心化的版本控制
三、初始化项目
在项目目录中git init
四、常用命令
1. 比较不同
git diff不添加额外参数时,默认比较工作区和暂存区
2. 添加追踪信息
git add index.html单个添加文件追踪
git add *.html通配符批量添加文件追踪
git add .或git add -A全量添加文件追踪
3. 提交到本地版本库
git commit -m '提交描述'
4. 比较不同2
git status
不同于git diff,git status只列出修改的文件
5. 查看提交的记录
git log
git log --oneline
git reflog查看所有的操作记录,包含reset的记录
显示最近五条记录git log --oneline -5
过滤查询信息git log --oneline --grep="index"
查看一天前的提交git log --oneline --before="1 day"
查看某个日期之前的提交git log --oneline --before="2021012-11"
6. 将错误删除或修改的文件恢复过来
第一种情况,未提交代码的修改
git checkout HEAD -- index.html
HEAD是一个指针,指向最近的一次提交版本
--表示当前分支
index.html这里是需要恢复的文件名
第二种情况,提交了代码的修改
git checkout HEAD^ -- index.html
^表示最近的一次提交的上一次提交,再加一个就是再上一次
7. 添加和提交命令
git commit -am 'user login'
等价于以下两个命令
git add .
git commit -m 'user login'
五、屏蔽信息
项目根目录下添加文件.gitignore
文件中添加忽略提交版本库的文件以及文件夹
.env
/vendor
/node_modules
/.idea
如果想要屏蔽的文件之前已经被添加到版本库进行追踪,再添加到.gitignore文件中还会被追踪,如果想要将其消除运行命令git rm -r --cached .,这样就会把缓存里的内容进行更新
六、临时保存工作进度
保存当前工作进度,处理紧急任务后恢复工作进度
git stash保存工作进度
此时项目代码会恢复到上次提交的状态
修改完 bug 之后
git add .
git commit -m 'fixed bug'
提交完修改 bug 代码之后
查看有哪些工作进度列表
git stash list
PS E:\tempFile\git\temp> git stash list
stash@{0}: WIP on master: cb3a4fa 修改index.html内容
恢复工作进度
git stash apply stash@{0}
如果出现如下错误
error: unknown switch `e'
需要添加转义符再执行命令
git stash apply stash@`{0`}
七、还原项目到某一个时间点
1. 第一种方式
模式有三种hard(最常用)、soft、mixed(默认)
git reset --hard 0c756f6
--hard模式完全抹掉了后来所有修改的存在信息,工作区和缓存区都删掉了相关文件信息
git reset --soft 0c756f6
--soft模式在工作区和缓存区会保留相关文件信息,应用场景:如果对一个文件或者功能多次提交修改记录,使用这种模式可以清除中间修改的提交记录,再次提交后合并成一个,让提交记录更加简明
git reset 0c756f6
--mixed模式在工作区会保留相关文件信息,但是在暂存区没有了,可以自己决定哪些文件需要保留,哪些文件可以手动删除一下,然后再提交
2. 第二种方式
git reset HEAD^返回上一个提交的版本
如果回退的次数多可以增加HEAD^^^^^或者使用git reset HEAD~5这种方式
或者使用git reset master~5
八、分支
1. 应用场景:
① 解决方案可行性验证,开启分支验证方案和代码的可行性,如果可行则合并到 master 上面
② 创建分支在分支上解决 Bug,需要解决较复杂的 Bug 时候可以使用分支
③ 创建新分支解决优先级更高的任务
2. 创建分支
git branch branch-name
3. 查看分支
git branch
4. 切换分支
git checkout branch-name
5. 查看分支的不同
git diff master..branch-name
对比详细文件的不同
git diff master..branch-name index.html
6. 合并分支
当前处于 master 分支
git merge branch-name
7. 合并分支冲突解决方法
手动修改出现错误的代码的地方,然后提交
九、代码托管
1. 创建代码托管仓库
Git 全局设置:
git config --global user.name "your_name"
git config --global user.email "your_email"
创建 git 仓库:
mkdir demo
cd demo
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/xxxxx/demo.git
git push -u origin "master"
已有仓库?
cd existing_git_repo
git remote add origin https://gitee.com/xxxxx/demo.git
git push -u origin "master"
2. 添加版本信息和分支信息
推送分支
git push origin vue-dev
查看远程信息
git remote
git remote -v
查看远程分支
git branch -r
3. 将项目拉取到本地或服务器
拉取代码
git clone https://gitee.com/xxxxx/demo.git your_project_name
本地拉取第三方依赖库
composer install 或 composer update
本地配置.env文件
将.env.example复制一份修改为.env文件,配置相关数据库信息等其他配置信息
运行项目
4. 获取远程更新并更新本地代码
拉取远程项目的状态变化
git fetch
查看变化
git status
更新本地代码
如果已经git fetch过,可以使用命令git merge origin/master
如果没有git fetch过,可以使用命令git pull,不管更没更新过
5. 使用 issue 和 pull request 为开源项目做贡献
先将仓库Fork生成本地备份
修改源码
提交pull requests