Git

137 阅读5分钟

一、安装

git-scm.com/

二、配置

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,远程代码仓库,比如一些代码托管平台githubgitlabgitee,将代码提交到远程仓库可以方便团队协作,可以实现中心化的版本控制

三、初始化项目

在项目目录中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 diffgit 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(最常用)、softmixed(默认)

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 installcomposer 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